2014-12-30 4 views
1
import requests  
from bs4 import BeautifulSoup  
data = requests.get("http://www.basketball-reference.com/leagues/NBA_2014_games.html")  
soup = BeautifulSoup(data.content)  
soup.find_all("a")  
for link in soup.find_all("a"):  
    "<a href='%s'>%s</a>" %(link.get("href=/boxscores"),link.text) 

Я пытаюсь получить ссылки только на бокс. Затем запустите цикл и организуйте данные из отдельных ссылок в csv. Мне нужно сохранить ссылки как векторы и запустить цикл .... тогда я застрял, и я не уверен, что это даже правильный способ сделать это.Python Скребок для ссылок

ответ

2

Идея заключается в том, чтобы перебирать все ссылки, которые имеют атрибут (hrefa[href]CSS Selector), то цикл по ссылкам и construct an absolute link, если href значение атрибута не начинается с http. Соберите все ссылки в список списков и использовать writerows(), чтобы сбросить его в формате CSV:

import csv 
from urlparse import urljoin 

from bs4 import BeautifulSoup 
import requests 


base_url = 'http://www.basketball-reference.com' 
data = requests.get("http://www.basketball-reference.com/leagues/NBA_2014_games.html")  
soup = BeautifulSoup(data.content)  

links = [[urljoin(base_url, link['href']) if not link['href'].startswith('http') else link['href']] 
     for link in soup.select("a[href]")] 

with open('output.csv', 'wb') as f: 
    writer = csv.writer(f) 
    writer.writerows(links) 

output.csv теперь входят:

http://www.sports-reference.com 
http://www.baseball-reference.com 
http://www.sports-reference.com/cbb/ 
http://www.pro-football-reference.com 
http://www.sports-reference.com/cfb/ 
http://www.hockey-reference.com/ 
http://www.sports-reference.com/olympics/ 
http://www.sports-reference.com/blog/ 
http://www.sports-reference.com/feedback/ 
http://www.basketball-reference.com/my/auth.cgi 
http://twitter.com/bball_ref 
... 

Неясно, что результат должен быть, но это, по крайней мере, , что вы можете использовать отправную точку.

Смежные вопросы