Python BeautifulSoup和Pandas从URL列表中提取表,并将所有表保存到单个数据帧或另存为csv
我试图从URL列表中提取表格数据,并希望将所有表格保存到单个csv文件中 我是一名新的python初学者,来自非CS背景,但是我非常渴望学习同样的东西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
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