【发布时间】:2021-01-28 03:27:16
【问题描述】:
我一直在使用以下脚本从网站上抓取一些数据并导出到 .csv 文件:
import requests
from bs4 import BeautifulSoup
import pandas as pd
res = requests.get('https://gol.gg/teams/list/season-ALL/split-ALL/tournament-LCS%20Summer%202020/')
soup = BeautifulSoup(res.text, 'html.parser')
table = soup.find("table", class_="table_list playerslist tablesaw trhover")
columns = [i.get_text(strip=True) for i in table.find("thead").find_all("th")]
data = []
table.find("thead").extract()
for tr in table.find_all("tr"):
data.append([td.get_text(strip=True) for td in tr.find_all("td")])
df = pd.DataFrame(data, columns=columns)
df.to_csv("S10-NA-AVGs.csv", index=False)
我在尝试使用同一脚本收集其他数据并导出到 .csv 时遇到问题。有问题的网站是:https://gol.gg/game/stats/25989/page-fullstats/
我知道数据在 html 代码中的布局不同,这就是我对它要获取的内容有点混淆的地方。这似乎是存储各个字段的位置,所以我尝试更改此行:
columns = [i.get_text(strip=True) for i in table.find("thead").find_all("th")]
这就是我收到错误消息的地方:
AttributeError: 'NoneType' 对象没有属性 'find'
我尝试将“th”和“thead”更改为几个不同的变体,但没有成功。
【问题讨论】:
-
这是一个非常普遍的问题,可能是在您运行 for 循环时,您的
table变量未定义。直到现在我还没有运行你的代码,但在你的 for 循环的一些迭代中,vartable肯定是类型None
标签: python csv web-scraping beautifulsoup export-to-csv