python - 如何遍历列表网络抓取的表格列并为每个项目返回一个结果?
问题描述
我有一个 python 代码,可以通过网络抓取正确的数据,但 guest 列中有多个字符串,目前只提取一个。那么,我如何遍历该列单元格中的列表并将 3 个客人作为单独的列返回,希望每个客人 1、客人2、客人3?谢谢
import requests
import pandas as pd
from bs4 import BeautifulSoup
import numpy as np
df = pd.DataFrame(columns=(['NoInSeason', 'Guests', 'Winner', 'OriginalAirDate']))
page = requests.get("https://en.wikipedia.org/wiki/List_of_QI_episodes")
soup = BeautifulSoup(page.content, "lxml")
my_tables = soup.find_all("table",{"class":"wikitable plainrowheaders wikiepisodetable"})
for table in my_tables:
table_rows = table.find_all("tr")
for tr in table_rows:
td = tr.find_all("td")
if len(td) == 5:
NoInSeason = td[0].find(text=True)
Guests = td[2].find_all(text=True)
Winner = td[3].find(text=True)
OriginalAirDate = td[4].find(text=True)
if len(Guests) == 3:
Guest1 = Guests[0]
Guest2 = Guests[1]
Guest3 = Guests[2]
df = df.append({'NoInSeason': NoInSeason, 'Guest1' : Guest1, 'Guest2' : Guest2, 'Guest3' : Guest3, 'Winner': Winner, 'OriginalAirDate' : OriginalAirDate}, ignore_index=True)
df.to_csv("output.csv")
print(df)
解决方案
这是你要找的吗?
df = pd.DataFrame(columns=(['NoInSeason', 'Guest 1',
'Guest 2', 'Guest 3', 'Winner', 'OriginalAirDate']))
page =
requests.get("https://en.wikipedia.org/wiki/List_of_QI_episodes")
soup = BeautifulSoup(page.content, "lxml")
my_tables = soup.find_all("table",{"class":"wikitable plainrowheaders wikiepisodetable"})
for table in my_tables:
table_rows = table.find_all("tr")
for tr in table_rows:
td = tr.find_all("td")
if len(td) == 5:
NoInSeason = td[0].find(text=True)
Guests = td[2].find_all(text=True)
Winner = td[3].find(text=True)
OriginalAirDate = td[4].find(text=True)
print(Guests)
try:
df = df.append({'NoInSeason': NoInSeason, 'Guest 1' : Guests[0], 'Guest 2' : Guests[1], 'Guest 3' : Guests[2], 'Winner': Winner, 'OriginalAirDate' : OriginalAirDate}, ignore_index=True)
except IndexError as index_error:
continue
print(df)
编辑:我看到您更改了代码,现在可以使用吗?在 DataFrame 中包含 Guest1、Guest2 和 Guest3 列会不会更好,这样您就不会得到一个充满 NaN 的“Guests”列?
推荐阅读
- amazon-web-services - 数据在 DynamoDB Stream 中保留多长时间
- c++ - 调用微不足道的析构函数有什么影响?
- php - angular ng 模块验证问题和 Laravel auth 密码确认问题
- php - 在 Codeigniter 函数的权限中添加多个角色
- elasticsearch - 我的索引中的 ElasticSearch 同义词用法/语法
- node.js - 路由捕获空错误 (User.findOne)
- jquery - jQuery.tablesorter.addParser 是函数用法
- bash - 如果条件不适用于检查变量是否为空
- kubernetes - Kubernetes pod 未就绪
- python - 告诉 InlfuxDB 客户端(或任何 Python 请求客户端)信任自签名证书的正确方法?