这是运行ResultSet
的soup[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='<div class="tooltip infowin-tooltip" role="tooltip"><div class="tooltip-arrow"><div class="tooltip-arrow-inner"></div></div><div class="tooltip-inner" style="text-align: left"></div></div>' 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='<div class="tooltip infowin-tooltip" role="tooltip"><div class="tooltip-arrow"><div class="tooltip-arrow-inner"></div></div><div class="tooltip-inner" style="text-align: left"></div></div>' data-toggle="tooltip" title="XIAMEN [CN]">'''
然后:
>>soup = BeautifulSoup(b, 'html.parser')
>>soup.find('div')['title']
>>XIAMEN [CN] #prints contents of title
为什么我要给汤回音?为什么我的第一次搜索不成功?
编辑,
soup
的来源:我有一个通过
urls
查看的grequests
列表。我要找的东西之一是包含title
的XIAMEN [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/