Python 从一个页面获取所有链接
我正在使用beautifulsoup从一个页面获取所有链接。我的代码是: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
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以访问找到的所有链接。