Python 从一个页面获取所有链接

Python 从一个页面获取所有链接,python,web-scraping,beautifulsoup,html-parsing,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') sou

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

您正在告诉
find_all
方法查找
href
标记,而不是属性

您需要找到
标记,它们用于表示链接元素

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

替换最后一行:

links = soup.find_all('a')
通过这句话:

links = [a.get('href') for a in soup.find_all('a', href=True)]
它将丢弃所有
a
标记,对于每个
a
标记,它将把
href
属性附加到链接列表中


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

以获取每个
href
的列表,而不考虑标记的使用:

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

但是当我这样做的时候,我只得到了第一个链接:我应该做一个for循环并得到所有链接吗?
links=soup.find_all('a')
提供了所有链接的列表。我在答案的底部代码中使用了第一个链接作为示例。然后在
链接
列表上循环yes以访问找到的所有链接。