簡體   English   中英

如何使用 Beautiful Soup 和 Pandas 或任何其他方法從網站以結構化格式捕獲表格?

[英]How to capture table in a structured format from the website using Beautiful soup and Pandas or any other method?

我想從本網站https://www.bseindia.com/stock-share-price/infosys-ltd/infy/500209/shareholding-pattern/抓取表格“指定證券匯總報表”我嘗試使用抓取數據selenium 但它都在沒有任何表的一列中,並且該表沒有唯一標識符。 如何使用 pandas 和 Beautiful Soup 以結構化格式或任何其他方法刮表。 這是我想弄清楚的代碼,但沒有用。

import requests
import pandas as pd

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0"
}

params = {
    'id': 0,
    'txtscripcd': '',
    'pagecont': '',
    'subject': ''
}

def main(url):
    r = requests.get(url, params=params, headers=headers)
    df = pd.read_html(r.content)[-1].iloc[:, :-1]
    print(df)

main("")

要將表加載到 DataFrame 和 csv,您可以使用以下示例:

import requests
import pandas as pd
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0'}
api_url = 'https://api.bseindia.com/BseIndiaAPI/api/shpSecSummery_New/w?qtrid=&scripcode=500209'

soup = BeautifulSoup(requests.get(api_url, headers=headers).json()['Data'], 'lxml')
table = soup.select_one('b:contains("Summary statement holding of specified securities")').find_next('table')
df = pd.read_html(str(table))[0].iloc[2:, :]

df.to_csv('data.csv')

保存data.csv (來自 LibreOffice 的截圖):

在此處輸入圖片說明

您要查找的數據由以下 API 端點提供:

https://api.bseindia.com/BseIndiaAPI/api/shpSecSummery_New/w?qtrid=&scripcode=500209

其中, scripcode是唯一標識符。

API 不會檢查 cookie/會話,因此直接調用此端點將返回您正在查找的數據。

暫無
暫無

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

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