Python BeautifulSoup和Pandas从URL列表中提取表,并将所有表保存到单个数据帧或另存为csv

Python BeautifulSoup和Pandas从URL列表中提取表,并将所有表保存到单个数据帧或另存为csv,python,pandas,dataframe,csv,beautifulsoup,Python,Pandas,Dataframe,Csv,Beautifulsoup,我试图从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.B

我试图从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

我上面的代码只从最后一个url-'Z'中获取表,正如我所检查的,它实际上是列表中最后一个url中的表


我在这里试图实现的是将URL列表中的所有表(即从A到Z)放入一个csv文件。

这是一个缩进和顺序问题<代码>表_行每次都会通过url中url的循环重置,因此您只会得到最后一个url值的数据。如果你想在一个最终的CSV中保存所有的URL数据,请参阅下面我所做的更改

将熊猫作为pd导入
导入urllib.request
将bs4作为bs导入
URL=['A','B','C','D',…'Z']
数据=[]#移到开头
对于url中的url:
source=urllib.request.urlopen(url.read())
soup=bs.BeautifulSoup(源,“lxml”)
table=soup.find('table',class='tbldata14 bdrtpg')
table_rows=table.find_all('tr')
#缩进以下循环,使其与每个URL数据一起运行
对于表_行中的tr:
td=tr.find_all('td'))
行=[tr.text代表td中的tr]
data.append(行)
final_table=pd.DataFrame(数据,列=[“ABC”,“XYZ”,“…]))
最终表格到csv(r'F:\Projects\McData.csv',index=False,header=True)

这是因为您的
表中的行
在每次迭代中都会在第一个
中被覆盖,因此它将有
最后一个
url的行only@SowjanyaRBhat,它成功了。谢谢谢谢,代码现在运行正常,我得到了完整的csv