这是运行ResultSetsoup[0].find_all('div', {'class':'font-160 line-110'})

[<div class="font-160 line-110" data-container=".snippet-container" data-html="true" data-placement="top" data-template='&lt;div class="tooltip infowin-tooltip" role="tooltip"&gt;&lt;div class="tooltip-arrow"&gt;&lt;div class="tooltip-arrow-inner"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tooltip-inner" style="text-align: left"&gt;&lt;/div&gt;&lt;/div&gt;' data-toggle="tooltip" title="XIAMEN [CN]">
    <a class="no-underline group-ib color-inherit"
    href="/en/ais/details/ports/959">
    <span class="text-default">CN</span><span class="text-default text-darker">XMN
</span>
</a>
</div>]

在试图在XIAMEN [CN]之后拉出title时,我不能使用a[0].find('div')['title](其中a是上面的BeautifulSoup ResultSet)。但是,如果我将HTML复制并粘贴为新字符串,例如,
b = '''<div class="font-160 line-110" data-container=".snippet container" data-html="true" data-placement="top" data-template='&lt;div class="tooltip infowin-tooltip" role="tooltip"&gt;&lt;div class="tooltip-arrow"&gt;&lt;div class="tooltip-arrow-inner"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tooltip-inner" style="text-align: left"&gt;&lt;/div&gt;&lt;/div&gt;' data-toggle="tooltip" title="XIAMEN [CN]">'''

然后:
>>soup = BeautifulSoup(b, 'html.parser')
>>soup.find('div')['title']
>>XIAMEN [CN] #prints contents of title

为什么我要给汤回音?为什么我的第一次搜索不成功?
编辑,soup的来源:
我有一个通过urls查看的grequests列表。我要找的东西之一是包含titleXIAMEN [CN]
所以当我这样做的时候
soup = []
    with i in range(2) #number of pages parsed
     rawSoup = BeautifulSoup(response[i].content, 'html.parser')
     souporigin = rawSoup.find_all('div', {'class': 'bg-default bg-white no-    snippet-hide'})
    soup.append(souporigin)

网址是
[
'http://www.marinetraffic.com/en/ais/details/ships/shipid:564352/imo:9643752/mmsi:511228000/vessel:DE%20MI',
'http://www.marinetraffic.com/en/ais/details/ships/shipid:3780155/imo:9712395/mmsi:477588800/vessel:SITC%20GUANGXI?cb=2267'
]

最佳答案

我发现问题发生在我建立我的美容组的时候。我创建了一个部分搜索结果的列表,然后不得不在列表上迭代以进行研究。我只是在网上搜索我想要的东西:
我改了:

soup = []
    with i in range(2) #number of pages parsed
     rawSoup = BeautifulSoup(response[i].content, 'html.parser')
     souporigin = rawSoup.find_all('div', {'class': 'bg-default bg-white no-    snippet-hide'})
     soup.append(souporigin)

致:
 a = soup.find("div", class_='font-160 line-110')["title"]

在我创建soup后立即运行此搜索,这将删除代码中的大量冗余——我一直在创建ResultSets列表,并且必须对它们使用find来创建新字段。

关于python - 为什么BeautifulSoup在第二次解析而不是第一次解析时起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39987731/

10-12 20:29