首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python从网页解析表

Python从网页解析表
EN

Stack Overflow用户
提问于 2019-07-01 10:24:11
回答 2查看 144关注 0票数 2

我正在尝试将此链接中的表解析为结构化数据类型,例如DataFrame或json之类的。然而,似乎我尝试过的任何一种方法都不会成功,包括requestspandas.read_html

最后,我发现这是因为从网页中获得的HTML确实是,而不是,它包含了表中的信息。例如,字符串"贵广转债"显然存在于表主体中,但是页面源中没有字符串(ctrl+F它没有提供匹配)!但是,当您右键单击并转到单元格的时,该字符串就会出现。

看起来,如果我能够在Inspect -> Elements面板中获得信息,那么我就可以解析出表了。我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-01 10:37:49

对于使用ajax请求加载数据的动态页面,请尝试在Developer (F12)中监视网络选项卡

找到你需要的请求。

这里,代码机数据是从https://www.jisilu.cn/data/cbnew/cb_list/?___jsl=LST___t=1561977181934请求的。

代码语言:javascript
复制
POST https://www.jisilu.cn/data/cbnew/cb_list/?___jsl=LST___t=1561977181934
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,de-DE;q=0.7,en;q=0.3
Referer: https://www.jisilu.cn/data/cbnew/
X-Requested-With: XMLHttpRequest
Connection: keep-alive
Cookie: kbzw__Session=7n47d42nc28n259v722k8onhq5; kbz_newcookie=1
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded; charset=UTF-8

fprice=&tprice=&volume=&svolume=&premium_rt=&ytm_rt=&rating_cd=&is_search=N&btype=&listed=Y&industry=&bond_ids=&rp=50&page=1

<> 2019-07-01T013533.200.json

然后,您可以使用requests库或任何其他http客户机来获取json (如果需要,请记住提供头/cookie),然后使用JSON。

Python

使用该信息,您可以利用requests库如下:

代码语言:javascript
复制
import requests

if __name__ == '__main__':
    data = {
        'fprice': '',
        'tprice': '',
        'volume': '',
        'svolume': '',
        'premium_rt': '',
        'ytm_rt': '',
        'rating_cd': '',
        'is_search': 'N',
        'btype': '',
        'listed': 'Y',
        'industry': '',
        'bond_ids': '',
        'rp': '50',
        'page': '',
    }
    res = requests.post('https://www.jisilu.cn/data/cbnew/cb_list/?___jsl=LST___t=1561977181934',
                        data=data)
    res.raise_for_status()
    data = res.json()
    print(data)

这给了你一个非常大的列表:

代码语言:javascript
复制
{'page': 1, 'rows': [{'id': '110052', 'cell': {'bond_id': '110052', 'bond_nm': '贵广转债', 'stock_id': 'sh600996', 'stock_nm': '贵广 ... and goes on much longer
票数 3
EN

Stack Overflow用户

发布于 2019-07-01 10:35:41

对于动态更新/加载网页时的抓取实例,我建议在Python中使用“Selenium”。它在浏览器中加载页面,并允许您从那里以编程方式与其交互。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56833980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档