[英]Table data extraction with BeautifulSoup
我想從以下網站獲取表格數據:
https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/sirket-karti.aspx?hisse=ALCAR
我的代碼獲取表數據,但我遇到附加到 dataframe 的問題。
stock = 'ALCAR'
page = requests.get(f"https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/sirket-karti.aspx?hisse={stock}")
soup = BeautifulSoup(page.content, 'html.parser')
table = soup.find('tbody', id="tbodyMTablo")
print(table)
for j in table.find_all('tr'):
row_data = j.find_all('td')
row = [i.text for i in row_data]
#print(row)
df = pd.DataFrame(row).transpose()
df.to_csv('xxx.csv')
print(df)
您將每一行保存在 csv 文件中,並在 for 循環的每一步覆蓋它。 這是一個解決方案,允許首先保存 pandas dataframe 中的所有行,最后將 dataframe 保存到 csv。
import requests
from bs4 import BeautifulSoup
import pandas as pd
stock = 'ALCAR'
page = requests.get(f"https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/sirket-karti.aspx?hisse={stock}")
soup = BeautifulSoup(page.content, 'html.parser')
table = soup.find('tbody', id="tbodyMTablo")
df = pd.DataFrame() # initialize dataframe
for j in table.find_all('tr'):
row_data = j.find_all('td')
row = [i.text for i in row_data]
df = df.append(pd.DataFrame(data=[row])) # append row to dataframe
df.to_csv('xxx.csv') # save dataframe to csv file
print(df)
另外 - 因為你正在使用pandas
你可以簡單地使用pandas.read_html
來創建你的DataFrame
。
import pandas as pd
stock = 'ALCAR'
df = pd.read_html(f'https://www.isyatirim.com.tr/tr-tr/analiz/hisse/Sayfalar/sirket-karti.aspx?hisse={stock}', attrs = {'class':'excelexport'})[0]
df.to_csv('filename.csv')
或者,如果您不需要headers
和index
:
df.to_csv('filname.csv', header=None,index=None)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.