我正在尝试将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库,但是我缺少一些东西。你知道吗
出现此错误是因为一个或多个表行似乎是缺少数据的格式化行。循环没有填充
lacData
中的两个+元素,因此当您请求lacData[1:]
时,Python抛出一个IndexError
,因为第二个索引不存在,因此切片也不存在。你知道吗您可以使用^{} 避免所有这些。不是100%确定它对这么复杂的桌子有用,但你应该试试:
相关问题 更多 >
编程相关推荐