Python请求和beautifulsoup4,只收集" href"链接

时间:2016-12-19 04:10:05

标签: python beautifulsoup html-parsing python-requests

from bs4 import BeautifulSoup
import requests

url = "https://www.brightscope.com/ratings"
headers = {'User-Agent':'Mozilla/5.0'}
page = requests.get(url)
soup = BeautifulSoup(page.text, "html.parser")

data = soup.find_all('li',{"class":"more-data"})+soup.findAll('li', {"class":"more-data topten"})
for item in data:
   print(item('a'))

我想只打印hrefs,但我似乎无法解决这个问题。我查看了不同的视频但无法获得。我究竟做错了什么?我知道上面的代码是打印" a"的内容。标签,但我只需要href' s。

1 个答案:

答案 0 :(得分:2)

您需要使用字典式访问元素的属性

[a['href'] for a in item('a')]

另外,作为旁注,您可以改进查找li元素的方式,而不是:

data = soup.find_all('li',{"class":"more-data"})+soup.findAll('li', {"class":"more-data topten"})
for item in data:
   print(item('a'))

你可以这样做:

links = soup.select("li.more-data a")
for a in links:
    print(a["href"])

其中li.more-data a是一个CSS selector,它会匹配ali个元素内的所有more-data个元素。