2016-12-19 22 views
1
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的。Python请求和beautifulsoup4,只收集“href”链接

回答

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 aCSS selector,它将匹配li元素中的所有a元素与more-data类。