美丽的汤得到tag.id

时间:2014-07-25 18:55:21

标签: python html beautifulsoup html-parsing

我试图从页面中获取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时,我只得到一个"无"的列表。我在这里做错了什么?

2 个答案:

答案 0 :(得分:19)

您可以通过将标记视为字典(documentation)来访问标记的属性:

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

tag.id无效的原因是它等同于tag.find('id'),因为找不到None标记,因此导致id {{1}} 3}})。

答案 1 :(得分:0)

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

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