在Python中,我想在一个网站(这是一个日本期权交易信息)中刮表,并将其存储为一个数据帧
该网站是here,您需要单击“选项报价”以访问我要刮表的页面。最终URL为https://svc.qri.jp/jpx/english/nkopm/,但您不能直接访问此页面
以下是我的尝试:
pd.read_html("https://svc.qri.jp/jpx/english/nkopm/")
...HTTPError: HTTP Error 400: Bad Request
所以我想我需要添加一个用户代理。下面是我的另一个尝试:
url = "https://svc.qri.jp/jpx/english/nkopm/"
pd.read_html(requests.get(url, headers={'User-agent': 'Mozilla/5.0'}).text)
...ValueError: No tables found
又一次尝试
import urllib
url = 'https://svc.qri.jp/jpx/english/nkopm/'
opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
response = opener.open(url)
tables = pd.read_html(response.read(), attrs={"class":"price-table"})[0]
...HTTPError: HTTP Error 400: Bad Request
我知道如何玩熊猫,所以一开始就不必将其导入整洁的数据框中。我只需要先导入pandas中的表,但我不确定为什么我甚至不能阅读页面。任何帮助都将不胜感激
顺便说一下,如果单击中间列中的灰色箭头,,如果我也可以导入这些行,那就太好了,但这并不是必须的
根据Ahmad's的回答,您几乎做到了:
您只需获得以下表格:
这将产生:
阅读pandas函数的文档
read_html
它说因此,函数需要以html表的形式进行结构化输入。我实际上无法访问您链接的网站,但我猜它会返回整个网站
您需要以结构化格式提取数据,以便pandas能够理解它。你需要刮它。这方面有很多工具,其中一个很流行的工具是^{}
Tl;dr:所以你需要做的是下载带有
requests
的网站,将其传递到BeautifulSoup
,然后使用BeautifulSoup
以结构化格式提取数据最新答复:
似乎请求返回
400
的原因是因为网站需要一些额外的标题-我刚刚将浏览器的请求转储到请求中,它工作了相关问题 更多 >
编程相关推荐