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