从页面获取所有链接美丽的汤

时间:2017-09-29 14:10:10

标签: python web-scraping beautifulsoup html-parsing

我正在使用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链接的列表?

3 个答案:

答案 0 :(得分:11)

您告诉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

答案 1 :(得分:6)

替换你的最后一行:

links = soup.find_all('a')

按行:

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

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

如果您想了解[]之间for循环的更多信息,请阅读List comprehensions

答案 2 :(得分:0)

要获取所有href的列表,而不考虑标签的使用情况:

href_tags = soup.find_all(href=True)   
hrefs = [tag.get('href') for tag in href_tags]