【问题标题】:TypeError: 'in <string>' requires string as left operand, not NoneTypeTypeError: 'in <string>' 需要字符串作为左操作数,而不是 NoneType
【发布时间】:2023-04-08 19:58:01
【问题描述】:

我正在尝试创建一个简单的刮板来收集篮球统计数据。我能够得到我想要的信息,但是,我不知道如何将它们全部组织在一个表格中。

我不断收到“TypeError: 'in ' 需要字符串作为左操作数,而不是 NoneType。”

请看我下面的代码:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import re

url = 'https://basketball.realgm.com/ncaa/boxscore/2021-01-29/North-Texas-at-Rice/367436'
page = requests.get(url)
soup = BeautifulSoup(page.content , 'html.parser')

#Extracting Columns
tables = soup.find('div', class_= 'boxscore-gamesummary')
columns = tables.find_all('th', class_='nosort')

#Extracting Stats
tables = soup.find('div', class_= 'boxscore-gamesummary')
stats = tables.find_all('td')

#Filling DataFrame
temp_df = pd.DataFrame(stats).transpose()
temp_df.columns = columns

final_df = pd.concat([final_df,temp_df], ignore_index=True)

final_df

期待收到某人的来信

【问题讨论】:

  • 请发布完整的错误消息,包括回溯。
  • 您可能还想再次检查您的代码,以确保每个部分都为您提供您期望/想要的输出

标签: python pandas web-scraping beautifulsoup screen-scraping


【解决方案1】:

Pandas 已经有一个从 HTML 获取数据帧的内置方法,这应该会让事情变得更容易。

代码

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://basketball.realgm.com/ncaa/boxscore/2021-01-29/North-Texas-at-Rice/367436'
page = requests.get(url)
soup = BeautifulSoup(page.content , 'html.parser')

tables = soup.find('div', class_= 'boxscore-gamesummary').find_all('table')
df = pd.read_html(str(tables))[0]

print(df)

输出

  Unnamed: 0   1   2  Final
0  UNT (8-5)  36  43     79
1  RU (10-7)  37  37     74

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多