从 Beautiful Soup 页面获取所有链接

新手上路,请多包涵

我正在使用 beautifulsoup 从页面获取所有链接。我的代码是:

 import requests
from bs4 import BeautifulSoup

url = 'http://www.acontecaeventos.com.br/marketing-promocional-sao-paulo'
r = requests.get(url)
html_content = r.text
soup = BeautifulSoup(html_content, 'lxml')

soup.find_all('href')

我得到的只是:

 []

如何获得该页面上所有 href 链接的列表?

原文由 user1922364 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 709
2 个回答

您告诉 find_all 方法来查找 href 标签, 而不是 属性。

您需要找到 <a> 标签,它们用于表示链接元素。

 links = soup.find_all('a')

稍后您可以像这样访问它们的 href 属性:

 link = links[0]          # get the first link in the entire page
url  = link['href']      # get value of the href attribute
url  = link.get('href')  # or like this

原文由 Anonta 发布,翻译遵循 CC BY-SA 3.0 许可协议

替换你的最后一行:

 links = soup.find_all('a')

通过那条线:

 links = [a.get('href') for a in soup.find_all('a', href=True)]

它将废弃所有 a 标签,并且对于每个 a 标签,它会将 href 属性附加到链接列表。

如果您想了解更多关于 [] 之间的 for 循环,请阅读 列表 推导。

原文由 wbwlkr 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题