【发布时间】:2020-02-05 23:40:24
【问题描述】:
当一个 html 标签有一个与之关联的 id 时,我可以访问它的内容,但是找不到没有 id 的 html 标签。
当 id 存在时,我可以访问我需要的内容:
<div id="anything">
<div class="anything">
What I need
</div>
</div>
但如果标签看起来像这样:
<div id="anything">
<div>
<div class="something">
What I need
</div>
</div>
</div>
我无法使用 .findAll、.find_next_sibling 或 .children 找到它 我尝试通过以下方式找到它:
x = soup.find('div', attrs ={'id':'anything'})
type(x.div)
print(x.div.text)
但是 type(x.div) 返回 NoneType....???
for foo in soup.find_all('div', attrs={'id': 'anything'}):
bar = foo.find('div', attrs={'class': 'anything'})
print(bar.contents[0].text)
这会在第一个 html 块中打印“我需要什么”,而不是第二个
这适用于带有 ID 的标签,但我无法找到一种方法来查找没有 ID 的 div
【问题讨论】:
-
只要去掉
attrs参数,它就会找到所有的DIV。 -
如果有很多 div (~100),那么在 find_all DIV 之后如何找到我正在寻找的那个(没有 id 或 class 的 DIV)?
-
你要找的标准是什么?
-
在上面的 html 示例中,我需要的文本位于标记内,但该标记位于没有 id 或类的标记内。我无法从解析到并最终解析到看起来只是一个错字。第二个电话应该是
{'class': 'something'},而不是{'class': 'anything'}
标签: python html python-3.x beautifulsoup