使用Beautiful Soup获取标签ID

40 投票
2 回答
50329 浏览
提问于 2025-04-18 14:48

我正在尝试从一个页面获取所有的div的id。当我打印出这些属性时,确实能看到id的列表。

for tag in soup.find_all(class_="bookmark blurb group") :
  print(tag.attrs)

结果是:

{'id': 'bookmark_8199633', 'role': 'article', 'class': ['bookmark', 'blurb', 'group']}
{'id': 'bookmark_7744613', 'role': 'article', 'class': ['bookmark', 'blurb', 'group']}
{'id': 'bookmark_7338591', 'role': 'article', 'class': ['bookmark', 'blurb', 'group']}
{'id': 'bookmark_7338535', 'role': 'article', 'class': ['bookmark', 'blurb', 'group']}
{'id': 'bookmark_4530078', 'role': 'article', 'class': ['bookmark', 'blurb', 'group']}

所以我知道确实存在这些id。然而,当我打印出tag.id的时候,却只得到一堆“None”。我这是哪里出错了呢?

2 个回答

3

这个解决方案会列出页面中所有带有id的标签,这可能也会很有帮助。

tags = page_soup.find_all()
for tag in tags:
    if 'id' in tag.attrs:
        print(tag.name,tag['id'],sep='->')
59

你可以像使用字典一样来访问标签的属性(文档):

for tag in soup.find_all(class_="bookmark blurb group") :
    print tag.get('id')

之所以 tag.id 不起作用,是因为它相当于 tag.find('id'),而这个方法找不到 id 标签,所以返回的是 None文档)。

撰写回答