我尝试使用bs4
从网页获取表,并使用pandas
将它们转换为csv。在
网页有两个表,我可以得到第一个表,但只有第二个表的标题被刮伤。在
我试过下面的代码。在
from urllib2 import Request, urlopen
from bs4 import BeautifulSoup
from scrapelib import table_to_2d
import pandas as pd
ehurl = 'https://www.fpi.nsdl.co.in/web/Reports/Latest.aspx'
hd = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1;WOW64;rv:46.0) Gecko/46.0 Firefox/46.0'}
raq = Request(ehurl, headers=hd)
resp = urlopen(raq)
eh_page = resp.read()
soup = BeautifulSoup(eh_page, "html.parser")
i=1
for qeros in soup.findAll("table"):
x = table_to_2d(qeros)
df = pd.DataFrame(x)
df.to_csv("fpi" + str(i) + ".csv", sep=",", header=False, index=False)
i += 1
函数table_to_2d
取自https://stackoverflow.com/a/48451104/2724299
我不确定您希望您的csv文件的格式,但您可以尝试以下方法将表放入csv文件:
以下是表1.csv:
^{pr2}$和表2.csv:
对于第二个表,实际的}元素在}标记将生成所需的数据,并且通过应用
tr
、th
和{table
标记下没有结构化。因此,刮掉所有tr
、th
、和{itertools.groupby
,可以获得原始的表结构。在输出:
^{pr2}$table
:table2
:相关问题 更多 >
编程相关推荐