![](/img/trans.png)
[英]How to capture table in a structured format from this website using Beautiful soup and 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.