我有一个具有不同 class 和 div 属性的 html 文件,如下所示
<div id="meat">
<div id="tag_nav" class="font2 pad2">
Comics:
<a id="tag_nav_random" href="/random">Random</a>
<a id="tag_nav_popular" href="/tag/popular">Most Popular</a>
<a href="/comics">All</a>
<a href="/tag/cats">Cats</a>
<a href="/tag/grammar">Grammar</a>
<a href="/tag/food">Food</a>
<a href="/tag/animals">Animals</a>
<a href="/tag/tech">Tech</a>
<li>
<div class="bg_comic">
<a href="/comics/mantis_shrimp"><img src="http://s3.amazonaws.com/theoatmeal-img/thumbnails/mantis_shrimp.png" alt="Why the mantis shrimp is my new favorite animal" class="border0" /></a>
</div>
<div class="category_and_view">
</li>
我想提取我的html页面中仅属于bg_comic类的所有链接,并忽略可能属于不同类的其他标签。 我正在尝试以下操作,但它不起作用:
links=soup.find_all("a",class_="bg_comic")
for tag in links:
link=tag.get('href',None)
在上面的示例中,link 变量的值应为 /comics/mantis_shrimp,而不是任何其他值。但我的代码没有打印任何内容。
我做错了什么?使用 BeautifulSoup 处理网页时,如何按 class 或 div id 值过滤链接?
最佳答案
html 中没有带有 bg_comic
类的 a
标签,但有带有 bg_comic
的 div
标签。
按如下方式修改您的代码将解决您的问题。
links = soup.find_all("div", class_="bg_comic") # a -> div
for tag in links:
lilnk = tag.a.get('href', None) # tag.get -> tag.a.get
或者,您可以使用css selector :
links = soup.select("div.bg_comic a")
for tag in links:
link = tag.get('href', None)
关于python - 在Python中使用BeautifulSoup处理网页时,如何通过**class**或**div id**值过滤href链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22127346/