【问题标题】:Reading the network requests of a given URL using python使用 python 读取给定 URL 的网络请求
【发布时间】:2021-07-29 04:14:42
【问题描述】:

我需要使用 python 获取红色的 URL,它每天都在变化,所以我不能将它硬编码到我的程序中,我拥有的唯一固定 URL 是绿色的,GET 参数,如令牌、qid、或回调每天都在更改,因此我无法直接请求

有没有办法获取所有“网络”请求的列表?如果可以的话,我可以使用不变的部分查找我需要的 URL,或者直接获取到 .JSON 的链接的方法也可以,我该如何实现?

编辑: 我有这个固定链接https://www.hkex.com.hk/Market-Data/Securities-Prices/Equities?sc_lang=en(绿色)并且需要这个链接https://www1.hkex.com.hk/hkexwidget/data/getequityfilter?lang=eng&token=evLtsLsBNAUVTPxtGqVeGwzK35ZFJ/ZUHtaMT29Z5aJ1PmQCIZMQ2aoTplY9Ozc3&sort=5&order=0&qid=1627532414377&callback=jQuery35109210633367295534_1627532407574&_=1627532407576(红色) 问题是红色链接及其GET参数每天都在变化,所以我需要使用绿色链接提取它,我已经尝试使用requestsurllib3获取HTML,但HTML没有任何信息新的 GET 参数或 .JSON 中包含的信息

EDIT2:我对这部分没有任何问题,但在这里我无法对红色 URL 进行硬编码

url='https://www1.hkex.com.hk/hkexwidget/data/getequityfilter?lang=eng&token=evLtsLsBNAUVTPxtGqVeG9L82ZzJ20aOxX0Y6tf3oVlc%2f2L6sWNlm1qsCGs3dLts&sort=5&order=0&qid=1627389214442&callback=jQuery351020345220954587373_1627389204429&_=1627389204431'
response = requests.get(url)
data = json.loads(response.text)
data = data['data']
...print...

【问题讨论】:

  • 请以文本形式而不是图像形式提供信息。也提供你的努力!
  • @Xitiz 我已经添加了描述和一些我尝试过的东西,谢谢
  • 请尝试“它每天都在变化,所以我不能将它硬编码到我的程序中” 添加您的代码/程序。 :)
  • @Xitiz 我添加了“我无法硬编码”的部分,我认为这不是问题的任何重要信息,但我希望它有所帮助
  • 我只是想看看,你已经做了足够的努力来自己解决你的问题。你有没有在那个红色链接中找到任何模式,就像我发现他们使用日期作为 _ 作为下划线参数和 qid 一样。你能提供其他不同日期的链接吗?并且您试图仅获取该链接或从不同日期获取该链接?

标签: python json python-3.x web-scraping


【解决方案1】:

这个问题有两个部分:

  • 如何做到这一点:Python 中有几个库可以让您以不同程度的保真度访问网站,就像您正在浏览一样,包括在后台运行实际浏览器并从 Python 控制它(例如,硒)。最后一个肯定会起作用,虽然它很烦人而且很脆弱 - 每次证券交易所显着改变网站布局时,它都会崩溃。

  • 证券交易所通过订阅(直接和通过路透社或晨星等经销商)出售这些数据。这有两个后果:

    • 通过订阅读取数据会容易得多;会有一个文档化的 API,可能是示例代码,技术支持。

    • 如果没有订阅,他们可能会对您试图抓取信息并采取积极措施阻止您(技术上的或潜在的法律上的)感到非常恼火。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多