在fi中保存Wikipedia表数据

2024-04-26 17:33:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将Wikipedia表保存到平面文件。页面上有五个表,但我的代码只选择了最后一个表。 尝试将数据写入文件时,出现以下错误:

IndexError: tuple index out of range

from bs4 import BeautifulSoup
import pandas as pd
from pandas import DataFrame
import urllib.request as urr
import os
import codecs
import csv

wiki = "https://en.wikipedia.org/wiki/Sixteenth_Legislative_Assembly_of_Uttar_Pradesh"
header = {'User-Agent': 'Mozilla/5.0'} #Needed to prevent 403 error on Wikipedia
req = urr.Request(wiki,headers=header)
page = urr.urlopen(req)
soup = BeautifulSoup(page, "lxml")
delimiter=',',quoting=csv.QUOTE_ALL)


lacDataSaved="#,Assembly,Name,Party,Reserved,ID,District,LS,Comments"
# find all table ,get the first
table = soup.find_all('table', class_="wikitable")[4] # Only use the first table
# iterate over it
for record in table.findAll('tr'):
    lacData=""
    for data in record.findAll('td'):
        lacData=lacData+","+data.text
    lacDataSaved=lacDataSaved+"\n"+lacData[1:]

#print(lacDataSaved)

import numpy as np
np.savetxt("file_name.csv", lacDataSaved, delimiter=",")

我也尝试过使用python csv库,但是我缺少一些东西。你知道吗


Tags: 文件ofcsvfromimportpandasaswiki
1条回答
网友
1楼 · 发布于 2024-04-26 17:33:47

出现此错误是因为一个或多个表行似乎是缺少数据的格式化行。循环没有填充lacData中的两个+元素,因此当您请求lacData[1:]时,Python抛出一个IndexError,因为第二个索引不存在,因此切片也不存在。你知道吗

您可以使用^{}避免所有这些。不是100%确定它对这么复杂的桌子有用,但你应该试试:

import pandas as pd
[...get the table data into a BeautifulSoup object...]
my_data = pd.read_html(str(table))

相关问题 更多 >