如何使用 BeautifulSoup 查找类的 href 链接
Posted
技术标签:
【中文标题】如何使用 BeautifulSoup 查找类的 href 链接【英文标题】:How to use BeautifulSoup to find an href link with a class 【发布时间】:2019-02-19 06:57:29 【问题描述】:<div data-pet-card="pet-card" class="pet-card">
<a data-pet-card="pet-card-link" href="https://Link-I-Want.com"
class="pet-card__link">
我习惯于使用 BS4 抓取 html,但我对 html 本身并不十分熟悉,也没有遇到过同样具有类和 data-pet-card="pet-card-link"
的 href。我试过了:
for a in soup.find_all('a', href=True):
print("Found the URL:", a['href'])
但它什么也不打印,也没有错误。
任何有用的,谢谢。
【问题讨论】:
How to find elements by class的可能重复 你不需要关心数据属性,只需要关心类。 @Dominik 不,不是在寻找课程。试图获取 href 链接,但它被同一行的一个类包围。就像我说的我熟悉 BS4,我会知道如何找到一个简单的类。谢谢 不,您正在尝试查找类为“pet-card__link”的a
标签。
@DanielRoseman 是的,我该怎么做
【参考方案1】:
您在find_all
调用中添加的属性是您拥有的东西,而不是您想要找到的东西。这里有类,所以使用它:
for a in soup.find_all('a', class_="pet-card__link"):
print("Found the URL:", a['href'])
(因为class
是Python中的保留字,所以这里需要使用class_
。)
【讨论】:
由于这仍然没有打印,所以我的请求肯定有问题。这是我所做的以及当我说 print(response.text) 时它会打印的内容:https://pastebin.com/FbJVnQUV
该响应根本不包含任何“pet-” div。
我知道这就是我认为的问题所在。但是当我转到该链接然后检查页面的一部分时,它会显示在那里,所以我不确定出了什么问题。
imgur.com/a/IhfxTuz 您可以在此屏幕截图中看到突出显示的特定行和链接本身【参考方案2】:
for a in soup.find_all('a', href=True):
print("Found the URL:", a.get_attribute_list('href')[0])
请尝试此解决方案。
【讨论】:
不幸的是什么都没打印 您使用的是哪个版本的 BeautifulSoup? 我正在使用 BeautifulSoup4 @DevinGP 我的意思是 BeautifulSoup4 的哪个版本。以上是关于如何使用 BeautifulSoup 查找类的 href 链接的主要内容,如果未能解决你的问题,请参考以下文章
使用 BeautifulSoup 查找 html 中的所有表
如何让 BeautifulSoup 获得以下 div 类的价值