我正在開發(fā)一個(gè)屏幕抓取工具,以從www.pro-football-reference.com中提取足球統(tǒng)計(jì)數(shù)據(jù)。我目前正在從主要玩家的統(tǒng)計(jì)數(shù)據(jù)頁面中進(jìn)行抓取,然后深入到他們的個(gè)人頁面,其中包含按年份統(tǒng)計(jì)的數(shù)據(jù)。我能夠與我的第一批球員(四分衛(wèi),使用傳球臺(tái))成功地實(shí)施這個(gè)過程。但是,當(dāng)我嘗試重新創(chuàng)建進(jìn)程以獲取運(yùn)行數(shù)據(jù)時(shí),我在數(shù)據(jù)框中收到了一個(gè)附加列,其值為“未命名:x_level_0”。這是我第一次使用 HTML 數(shù)據(jù),所以我不確定我錯(cuò)過了哪一部分,我只是假設(shè)它與四分衛(wèi)的代碼相同。以下是 QB 代碼示例和正確的數(shù)據(jù)框:import requestsimport urllib.requestimport timefrom bs4 import BeautifulSoupimport pandas as pdfrom pandas import DataFrameimport lxmlimport reimport csvp = 1url = 'https://www.pro-football-reference.com'year = 2020maxp = 300#Passing Datar = requests.get(url+ '/years/' + str(year) + '/passing.htm')soup = BeautifulSoup(r.content, 'html.parser')parsed_table = soup.find_all('table')[0]results = soup.find(id='div_passing')job_elems = results.find_all('tr')df = []LastNameList = []FirstNameList = []for i,row in enumerate(parsed_table.find_all('tr')[2:]): dat = row.find('td', attrs={'data-stat': 'player'}) if dat != None: name = dat.a.get_text() print(name) stub = dat.a.get('href') #pos = row.find('td', attrs={'data-stat': 'fantasy_pos'}).get_text() #print(pos) # grab this players stats tdf = pd.read_html(url + stub)[1] for k,v in tdf.iterrows(): #Scrape 2020 stats, if no 2020 stats move on try: FindYear=re.search(".*2020.*",v['Year']) if FindYear: #If Year for stats is current year append data to dataframe提取此數(shù)據(jù)的示例 URL 為: https: //www.pro-football-reference.com/players/J/JacoJo01.htm它正在拉動(dòng)沖刺和接收。在解析 HTML 時(shí),我還需要注意什么嗎?我嘗試將 index_col = 1 添加到我的 tdf = pd.read_html(url + Stub)[1] 中。然而,這只是將兩個(gè)值分組到一列中。對(duì)此的任何意見將不勝感激。如果我可以提供任何進(jìn)一步的信息,請(qǐng)告訴我。
Python HTML 解析器(未命名級(jí)別)
阿波羅的戰(zhàn)車
2023-08-08 17:37:25