Python爬虫-行行查

本文介绍了如何使用Python的Requests库获取行行查网站的行业报告数据。首先,通过检查robots.txt确定爬虫允许,接着分析加密接口,找出解密方法。然后,演示了获取数据、解密并存储的步骤,最后讨论了如何下载PDF报告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用 Requests 简单获取行行查的行业数据

仅供学习,勿作他用,如违反相关规定请联系本人删除
首先放行行查链接:https://www.hanghangcha.com

这是一个关于行业报告数据库查询的网站

目标

我们的目标是将里面的行业报告pdf数据全部保存至本地,并且可以实现相应的按分类、关键字查询功能。

1. 前期准备

为了防止违反相关规定,我们直接请求了 https://www.hanghangcha.com/robots.txt 查看到行行查是没有禁止爬虫的,所以可以放心爬取。

首先这个网站的数据是不能直接获取的,需要微信登陆。登录后刷新页面,我们发现了两个问题

  1. 接口都是加密的
  2. 非会员只能看到很少的数据

由于本次爬虫仅供学习用途,部分数据已经足够了,所以我们可以忽略第二个问题直接解决第一个

2. 接口加密问题

我们随便点开一个接口就发现,返回的数据都是经过加密的,所以我们的第一个问题就是如何破解加密数据。

经过加密的数据

首先常规套路,直接去返回的js文件里面找到对应的加密方式,破解即可。在这里插入图片描述
我们直接打开js文件夹,找到第一个js文件。
这里注意一个编程习惯

一般而言,我们的加解密方法无非就是加密、解密的英文表述,直接翻译后搜索几次页面就可以找到了

美化过js之后,我们查询一下有没有 ecryp 相关的方法,如果找不到可以减少前后字母去匹配,这里我就大概找了一下,去掉了首位字母。果然,我们发现了加密方法。
在这里插入图片描述

虽然js经过了压缩,但是我们还是可以辨认出一些关键信息。

  1. 加密方式是 AES,模式是ECB,填充方式是 Pkcs7
  2. 4383 行的方法我们可以看出 密钥是 aos 三个字符串拼接而成,而这三个变量在上面都定义好了,所以可以直接得到密钥为 3sd&d24h@$udD2s*

有了这些数据,我们就可以先尝试获取一下数据了。

3. 尝试获取接口数据

有了上面的信息,其实下面的过程就是按部就班的了,我在这里简单写一下,就拿 https://api.hanghangcha.com/hhc/tag 这个接口做一下实验。

  1. 先找到接口的Cookies,复制到我们的代码中,由于request的Cookies参数是一个字典,我们可以稍微转换一下,切分字符串转成字典。
  2. 将请求回来的加密部分通过AES解密出来,然后 json转list,这里需要注意解密出来的json需要去除结尾的控制字符,否则会出现转换失败的情况。

下面附上源码

import base64
import json
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值