这是运行ResultSet
的{{1}}:
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
)。但是,如果我将该HTML复制并粘贴为新字符串,例如
BeautifulSoup ResultSet
然后做:
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
网址是
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)
答案 0 :(得分:1)
我发现设置BeautifulSoup时出现了问题。我创建了一个部分搜索结果列表,然后不得不迭代列表来研究它。我通过在线搜索我想要的东西来解决这个问题:
我改变了:
struct mystruct { int field; };
mystruct *foo(bool arg1, int val)
{
mystruct ptr = nullptr;
if (!arg1) return ptr;
if (val > 2 )
ptr = new mystruct;
ptr->field = val; // <<<< -- here
return ptr;
}
到:
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
他们为新的领域。
答案 1 :(得分:0)
您使用了错误的选择。
选择soup[0].find_all('div', {'class':'font-160 line-110'})
找到<div>
,您甚至可以在打印时看到<div>
。但是当您添加.find()
时,它会开始在内搜索 <div>
- 所以.find('div')
会尝试在当前div
中找到新的div
你需要
a[0]['title']
当你创建新的汤时,main / root元素不是div
但是[document]
和div
是它的孩子(div
在main“tag”中)所以你可以使用find('div')
。
>>> a[0].name
div
>>> soup = BeautifulSoup(b, 'html.parser')
>>> soup.name
[document]