gpt4 book ai didi

python - 为什么 Pandas Web Scraping 不能从该网站打印出任何表格?

转载 作者:行者123 更新时间:2023-12-02 18:04:15 27 4
gpt4 key购买 nike

我用 pandas webscraping 编写了这个简单的代码,它应该从这个股票网站提取数据。但是,一旦我运行这段代码,它就会显示“列表索引超出范围”,这意味着该网站上没有任何表格。但是如果你打开网站,你可以清楚地看到有多个表。谁能解释一下我该如何解决它?

网站链接:https://www.hkex.com.hk/Products/Listed-Derivatives/Single-Stock/Stock-Options?sc_lang=en

import pandas as pd

url = 'https://www.hkex.com.hk/Products/Listed-Derivatives/Single-Stock/Stock-Options?sc_lang=en'
dfs = pd.read_html(url)

print(len(dfs)) #Gets the row count of the table

print(dfs[0]) #prints the first table

最佳答案

从 Pandas 的角度来看,该页面中的表格存在一些不一致之处。这是将该页面上的第一个表作为数据框获取的一种方法:

import requests
from bs4 import BeautifulSoup as bs
import pandas as pd


headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.79 Safari/537.36'
}

url = 'https://www.hkex.com.hk/Products/Listed-Derivatives/Single-Stock/Stock-Options?sc_lang=en'

r = requests.get(url, headers=headers)
soup = bs(r.text, 'html.parser')
spec_table = soup.select('table[class="table migrate"]')[0]
df = pd.read_html(str(spec_table))[0]
print(df[:5].to_markdown())

这将返回数据框:

<表类="s-表"><头>否。联交所代码相关股票名称HKATS 代码合约大小(股)棋盘数量等级编号*限仓##(2022年4月1日起生效)台湾FSC认证<正文>0116新鸿基地产发展有限公司SHK10002150000✓12175吉利汽车控股有限公司GAH500051100000✓23268金蝶国际软件集团股份有限公司KDS20002150000南34285比亚迪电子国际有限公司再见10002150000南45288万洲国际WHG250052100000南

[...]

如果您需要页面中的其他表格,只需使用 BeautifulSoup 隔离它们,然后使用 pandas 读取它们。BeautifulSoup 文档:https://beautiful-soup-4.readthedocs.io/en/latest/index.html

Pandas 相关文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_html.html

关于python - 为什么 Pandas Web Scraping 不能从该网站打印出任何表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73676866/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com