簡體   English   中英

用BeautifulSoup提取表數據

[英]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')

或者,如果您不需要headersindex

df.to_csv('filname.csv', header=None,index=None)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM