Идея заключается в том, чтобы перебирать все ссылки, которые имеют атрибут (href
a[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
...
Неясно, что результат должен быть, но это, по крайней мере, , что вы можете использовать отправную точку.