【Python网络爬虫】企查查高级搜索及批量查询接口爬虫

这篇具有很好参考价值的文章主要介绍了【Python网络爬虫】企查查高级搜索及批量查询接口爬虫。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面:

  1. 本文所介绍的企查查爬虫代码需要用到cookie,且cookie所对应的账号需要为vip或以上等级具有高级搜索和批量查询的功能,无此功能的账号暂不支持;

  1. 本文所介绍的是在其他人分析了前端headers哈希加密后的基础上的进一步补充和完善,并会提供完整的请求代码;

  1. 本文所提供的逻辑和代码仅供学习交流,严禁用于商业或非法用途,否则由此产生的一切后果均与作者无关。


一. headers前端哈希逆向加密

本文所需要爬取的是企查查的高级搜索功能的预搜索和批量搜索两个接口,分别为:

https://www.qcc.com/api/search/searchCount

https://www.qcc.com/api/search/searchMulti

在https://gxzv.com/blog/qcc_headers_hash/?f=readme 该篇文章中,博主已详细介绍和解释了企查查高级查询中的headers哈希加密的逻辑,并给出了核心破解代码,本部分将会在这基础上进行补充。

引用的文章中有一个这个参数并没有给出详细的思路和解决方案:

【Python网络爬虫】企查查高级搜索及批量查询接口爬虫

在引用的文章中,这个win_tid是一个写死的参数,且是作为r_default函数的一个参数进行传递的,用于生成哈希参数键值对里面的value。但实际上这个win_tid参数并不是写死的,而是通过前面的http请求预先获取的:

【Python网络爬虫】企查查高级搜索及批量查询接口爬虫
【Python网络爬虫】企查查高级搜索及批量查询接口爬虫

通过在前端数据关键词查询,我们发现,在https://www.qcc.com/web/search/advance?hasState=true 这个请求中,返回的html数据中含有pid和tid参数,并且是传入到window对象中,tid是通过传入到r_default函数中的一个参数,而pid则是数据接口请求中headers的x-pid部分:

【Python网络爬虫】企查查高级搜索及批量查询接口爬虫

因此,需要有一个前置的请求预先获取这部分的pid和tid,代码如下:

import requests
import re

cookie = ''

def get_pid_tid():
    url = 'https://www.qcc.com/web/search/advance?hasState=true'

    headers = {
        'accept-encoding': 'gzip, deflate, br'
        ,'accept-language': 'zh-CN,zh;q=0.9'
        ,'cache-control': 'max-age=0'
        ,'cookie': cookie
        ,'referer': 'https://www.qcc.com/'
        ,'sec-fetch-dest': 'document'
        ,'sec-fetch-mode': 'navigate'
        ,'sec-fetch-site': 'same-origin'
        ,'sec-fetch-user': '?1'
        ,'upgrade-insecure-requests': '1'
        ,'user-agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'''
    }

    res = requests.get(url, headers=headers).text
    try:
        pid = re.findall("pid='(.*?)'", res)[0]
        tid = re.findall("tid='(.*?)'", res)[0]
    except:
        pid = ''
        tid = ''

    return pid, tid

二. 数据获取和注意事项

通过接口返回的数据为json结构,只需要调用json库就可以清理数据。

需要注意,哈希加密中,需要传入的参数有:url、data、tid三个部分。

url为其中一个传入的参数,在两个请求中,该参数并不一样,在searchcount的api中,url为/api/search/searchcount;在searchmulti中,url为/api/search/searchmulti

另外,data作为其中的一个参数,在两个api中的请求亦有所不同,searchcount中的data含有"count": True的部分,searchmulti中并无该部分,两个data的参数请求有不一样的地方。


三. 文章引用和代码

参考文章:https://gxzv.com/blog/qcc_headers_hash/?f=readme

代码链接:https://github.com/moyuweiqing/qcc_searchmulti文章来源地址https://www.toymoban.com/news/detail-437727.html

到了这里,关于【Python网络爬虫】企查查高级搜索及批量查询接口爬虫的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包