我是抓取初學者,我正在嘗試從本網站抓取資料(使用 beautifulSoup):
首先,我已經識別出我感興趣的元素,例如:
- 選手姓名
- 價值
- 年齡
- 季節
其次,我為每個物件創建了 1 個物件,以便將所有這些資料放入一個 Pandas 資料框中。
這是我的代碼:
import requests
from bs4 import BeautifulSoup
import pandas as pd , numpy as np
headers = {'User-Agent':
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'}
page = "https://www.transfermarkt.co.uk/transfers/transferrekorde/statistik?saison_id=alle&land_id=0&ausrichtung=&spielerposition_id=&altersklasse=&leihe=&w_s=&plus=1"
pageTree = requests.get(page, headers=headers)
pageSoup = BeautifulSoup(pageTree.content, 'html.parser')
Players = pageSoup.find_all("a", {"class": "spielprofil_tooltip"})
Values = pageSoup.find_all("td", {"class": "rechts hauptlink"})
Age = pageSoup.find_all("td", {"class": "zentriert"})
最后,在 for 回圈中,我創建了一個包含我想要的所有資訊的 Pandas Dataframe:
PlayersList = []
ValuesList = []
value_pre = []
rank = []
age = []
season = []
team = []
missing = []
for i in range(0,25):
PlayersList.append(Players[i].text)
ValuesList.append(Values[i].text)
value_pre.append(Values_pre[2*i].text)
rank.append(Age[(5*i)].text)
age.append(Age[1 (5*i)].text)
season.append(Age[2 (5*i)].text)
missing.append(Age[3 (5*i)].text)
team.append(Age[4 (5*i)].text)
df = pd.DataFrame({"Players":PlayersList,"Value_post":ValuesList , "value_pre":value_pre , "rank": rank , "age":age , "season":season , "missing": missing , "team":team })
df.head()
我得到的結果是一個像這樣的熊貓資料框:

我的問題:
如果我range()在 for 回圈內放置一個數字> 25,我會收到此錯誤:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-202-326415267fee> in <module>
9
10 for i in range(0,26):
---> 11 PlayersList.append(Players[i].text)
12 ValuesList.append(Values[i].text)
13 value_pre.append(Values_pre[2*i].text)
IndexError: list index out of range
由于螢屏上的表格每個表格頁面顯示 25 名玩家,因此我只能抓取前 25 名玩家的資訊。
如果我轉到第二頁(見螢屏),網址不會改變,那么我如何在 python 上控制它?
我的目標是提取網站內的所有玩家(及其資訊)。

uj5u.com熱心網友回復:
只需&page=2在您的 url 末尾添加例如查詢第二頁,它就變成:
?saison_id=alle&land_id=0&ausrichtung=&spielerposition_id=&altersklasse=&leihe=&w_s=&plus=1 &page=2
注意:為了便于閱讀,我縮短了 url。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/346514.html
上一篇:將`xml_document/xml_node`物件保存在tibble中以進行變異
下一篇:從具有JSon的站點抓取資料
