【发布时间】:2020-07-05 16:43:48
【问题描述】:
我正在尝试从 url 列表中提取表格数据,我想将所有表格保存到单个 csv 文件中。
我是 python 的新手,并且是非 CS 背景的初学者,但是我非常渴望学习同样的东西。
import pandas as pd
import urllib.request
import bs4 as bs
urls = ['A', 'B','C','D',...'Z']
for url in urls:
source = urllib.request.urlopen(url).read()
soup = bs.BeautifulSoup(source,'lxml')
table = soup.find('table', class_='tbldata14 bdrtpg')
table_rows = table.find_all('tr')
data = []
for tr in table_rows:
td = tr.find_all('td')
row = [tr.text for tr in td]
data.append(row)
final_table = pd.DataFrame(data, columns=["ABC", "XYZ",...])
final_table.to_csv (r'F:\Projects\McData.csv', index = False, header=True)
我从新创建的 csv 文件中的上述代码得到的是 -
ABC XYZ PQR MNL CYP ZXS
1 2 3 4 5 6
我上面的代码只从 last url-'Z' 获取表格,正如我检查过的那样,它实际上是列表中最后一个 url 的表格。
我在这里想要实现的是从 url 列表中获取所有表 - 即 A 到 Z 到单个 csv 文件中。
【问题讨论】:
-
那是因为您的
table_rows在每次迭代的第一个for中都会被覆盖 - 所以它将只有lasturl 的行
标签: python pandas dataframe csv beautifulsoup