在一些测试中,我注意到 div 标签内的标签 a,beautifulsoup 会自动将其“翻译”为文本:< /p>
<div class='a'>
<a href='....'>TEXT</a>
<i .....
</div>
当我使用命令 find_all('div', {'class' : 'a'})
搜索 div 标签并尝试打印结果 div.a
时,bs4 显示值 None.. . 但如果我尝试使用 print div.text
bs4 只显示 TEXT 而不是标签 a)。
这是部分代码:
soup = BeautifulSoup(html, 'lxml')
data=soup.find_all('div', {'class' : 'a'})
for div in data:
print div.a
$ None
为什么?
更新:刚才我注意到……这是另一个问题。在源代码中有标签 a... 但是现在,(使用 prettify 查看输出)我意识到标签 bs4 让我将其视为 div,而实际上它是一个标签a!奇怪!!!
BUG???
已解决 我做了一些清理并删除了请求和 urllib3 的所有包……然后我用 apt 重新安装了所有东西,现在可以工作了。 requests 和 urllib3 的包版本(分别)为:2.12.4-1 和 1.19.1-1
答案 0 :(得分:0)
我无法复制您的问题,但是您使用的 HTML 中有一个错字:clas='a'
应该是 class='a'
。
我使用的代码:
from bs4 import BeautifulSoup
html = '''<div class='a'>
<a href='....'>TEXT</a>
<i> .....</i>
</div>'''
soup = BeautifulSoup(html, 'html.parser')
data = soup.find_all('div', {'class': 'a'})
for div in data:
print (div.a)
我得到的输出:
<a href="....">TEXT</a>
.text
不会显示标签,而只会显示所选标签及其子标签内的文本。您还需要 BeautifulSoup
对象才能使用 find_all
方法