複数のページをループして、PythonとBeautifulsoupでデータをスクラップしようとしています。私のスクリプトは1ページで動作しますが、複数のページを反復しようとすると、最後のページからのデータが返されます。私は、ループするか、またはplayer_data
のリストを格納/追加する方法に何か問題があると思う。Pythonで複数のページを綺麗にするBeautifulsoup - 最後のページからのみデータを返す
これまで私がこれまで持っていたことは、どんな助けでも大歓迎です。
#! python3
# downloadRecruits.py - Downloads espn college basketball recruiting database info
import requests, os, bs4, csv
import pandas as pd
# Starting url (class of 2007)
base_url = 'http://www.espn.com/college-sports/basketball/recruiting/databaseresults/_/class/2007/page/'
# Number of pages to scrape (Not inclusive, so number + 1)
pages = map(str, range(1,3))
# url for starting page
url = base_url + pages[0]
for n in pages:
# Create url
url = base_url + n
# Parse data using BS
print('Downloading page %s...' % url)
res = requests.get(url)
res.raise_for_status()
# Creating bs object
soup = bs4.BeautifulSoup(res.text, "html.parser")
table = soup.find('table')
# Get the data
data_rows = soup.findAll('tr')[1:]
player_data = []
for tr in data_rows:
tdata = []
for td in tr:
tdata.append(td.getText())
if td.div and td.div['class'][0] == 'school-logo':
tdata.append(td.div.a['href'])
player_data.append(tdata)
print(player_data)
「print(player_data)」の前に4つのスペースを追加します。 – PRMoureu