猿问

Python HTML 解析器(未命名级别)

我正在开发一个屏幕抓取工具,以从www.pro-football-reference.com中提取足球统计数据。我目前正在从主要玩家的统计数据页面中进行抓取,然后深入到他们的个人页面,其中包含按年份统计的数据。

我能够与我的第一批球员(四分卫,使用传球台)成功地实施这个过程。但是,当我尝试重新创建进程以获取运行数据时,我在数据框中收到了一个附加列,其值为“未命名:x_level_0”。这是我第一次使用 HTML 数据,所以我不确定我错过了哪一部分,我只是假设它与四分卫的代码相同。

以下是 QB 代码示例和正确的数据框:

import requests

import urllib.request

import time

from bs4 import BeautifulSoup

import pandas as pd

from pandas import DataFrame

import lxml

import re

import csv

p = 1


url = 'https://www.pro-football-reference.com'

year = 2020

maxp = 300


#Passing Data

r = 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

提取此数据的示例 URL 为: https: //www.pro-football-reference.com/players/J/JacoJo01.htm

它正在拉动冲刺和接收。在解析 HTML 时,我还需要注意什么吗?

我尝试将 index_col = 1 添加到我的 tdf = pd.read_html(url + Stub)[1] 中。然而,这只是将两个值分组到一列中。

对此的任何意见将不胜感激。如果我可以提供任何进一步的信息,请告诉我。


阿波罗的战车
浏览 141回答 0
0回答
随时随地看视频慕课网APP

相关分类

Python
我要回答