java 解决企查查非法操作验证问题 爬取企查查企业相关数据 最新实践可用 java 代码

这两天需要用到某查查的数据。发现只能看到100页多余部分需要开启会员。导出表格也需要开vip .虽然在某宝上十几块就可以。但是我决定还是自己写个爬虫代码 将数据导出到 xls 表格

本来想用python 写的,但是不知道为什么WebDriver 的插件下不下来。所以最终还是选用了java 进行爬数据。

爬数据需要到的jar

    1.jsoup

    2.commons系列

    3.poi 导出表格

准备好了就开始进入正题 手把手教学

我是用的是360的浏览器。其他浏览器的开发者工具不一定是F12 ,请自行使用你们自己的浏览器快捷键 。下面的步骤都建立在登录后的前提下。各位记得登录自己的账号

首先第一步

1 .打开某查查的官网,然后随便输入搜索的内容 然后按F12 先清空所有的请求链接 然后点击

清空的意义只是在于方便看到下面所需要的链接相关数据,然后点击查一下。

这个就是所需要的搜索的接口。

当然 如果你还需要官网之类的信息的话 就还需要调另外的接口。我这就不截图了。直接将链接发出

https://www.qichacha.com/xxxxxxxxxxxxxxxxxxxxxxx.html

这个就是某个公司的详情页面 ,需要其他参数请自行在里面查找

知道这两个接口后。那么我们就开始进行爬数据了

我直接上代码。因为一开始写我没用jsoup 所以 就没有替换一开始的解析了。你们可以自行替换

Cookie 请将浏览器你看到的那个请求的Cookie 进行替换

自行复制下来进行替换就好。

自此得到的 stringBuffer 就是整个搜索的html的页面

这样就能拿到了基本相关信息 因为后来才用到jsoup 去获取里面更多的字段值。所以这部分也就没做修改了。

因为我这边还需要用到官网的字段。所以我这边getWebsite 方法 就是获取官网字段的方法。就不讲解了,因为都是一样的直接贴图

这个所返回的就是官网的地址 。具体要看的话 请用postMain 或者直接网页F12查看接口 ,因为接口返回的是整个html 的内容

这样子的话 就基本完成了。。我这边测试了下 发现刚开始是好的,但是突然就报错了。原因是我切割字符串没做判断导致的,这是为什么呢,。是因为请求多了。然后某查查那边认为是非法请求操作。然后有了个滑动验证的页面出现,所以我解析的时候就会报错。。

这个时候我F12查看的时候 因为会跳转新页面然后控制器的请求会被全部清空。所以我就用fiddler 进行抓包 查看了 连接请求的数据 。正好被我发现了。验证过程一共会有三个请求连接出现

第一个 https://cf.aliyun.com/nocaptcha/initialize.jsonp?a=QNYX&t=QNYX%3A"+curl+"%3A0.4401802408723421&&scene=register&lang=cn&v=v1.2.17&href=https%3A%2F%2Fwww.qichacha.com%2Findex_verify&callback=initializeJsonp_" +getNumber(0)

curl ==== 时间戳 getNumber 就是返回个18位数的字符串。这个我也不知道是为什么。因为我请求多次发现这个会变。所以我就随机了18位数。测试过后其实几位数的都ok 。为了正常 我就跟原来的一致

这个请求完毕后会返回个json

initializeJsonp_789786927615608146({“success”:true,“result”:{“msg”:“success”,“success”:true}});

initializeJsonp_789786927615608146 _后面的18位数就是之前自己传的。这个没啥用。可以不用管

然后滑动到最右边的时候又会调用一个接口

https://cf.aliyun.com/nocaptcha/analyze.jsonp?a=QNYX&t=QNYX%3A"+curl+"%3A0.4401802408723421&n=118%23ZVWZz%2FbUvTKbUewjOZ2CReZTZe7hngwuZH2kes6TzfQZZZZZc5i2YwbYtif4fHCVZZVCZOiTzeWzZgCuc6qYI99wtZChXHRYze2ZZwqhzTxizZZZXTNVzegVC411VHC%2FZZ2uZYqhzHRZZgCZXoqYZH2zZZChXHhbZZ2uZY6DzqquezbDcoTtGWex7gsDc5d3ngDQYKiGZ6W21oFZg72gsmbLOEjknPgZWicF%2FFCrNUXWSuYyRZQZuYPAPQqZZyj6zZG0pVRZXGtCQmNbHNyRbBzRDFeU9CT30YvYuPcKz3Be7DpKD9ZnLXqFwUdd1ro1Y%2Be5BlqZ1FYpqlj73ht5tS7YpZw2CfaliUhez430u5X4AIyNSPIp9mtXCOgoyXrjcct0CKYWt87QXamRaPxQc18ngVB9eSfdYe1r064HQ2r8XPqv3NILcApmAZWv20QmNOerOcTZcZbxpzVjf9K58Pq4EguewDQMjNI1MlGUBsew3djqxuk1rSIOwKhvvSx6lKeZubdWshTxRhVITgylO9gAbA0Y1JbqujnOGGsQMu4Wjvw%2BKKRQfzk0e%2BI9UgIEK32Mu5x9Mv37yDFLHJS0DObbHHZ8uM7zt2zhd%2Fci2gynTzpzyoQEk%2B8zmE3BAkSAor4OC0Nv%2FWOcV0BiyCcn%2FcVKzZuy0gZtv9V1R3BfZgUIxiCbBxb1xg3xSanb6OaFsN2J31Uzipok37GHGHtHrwx9RNrUF9KQc4i3F8bQTEi97plYOVSjiyNOJr0ebCeNOi%2B7kAdHhIXNlUW%2BRo5H6zsjWp8YF5VYVZwOR1fWsiVaPK0s1EM9xYWMdU%2B%2BLhMdUh1UJuDdvQendBZHUtP%2BGRmF5rsMtpHZt1aidNwi%2FZKyddDY1DPPXRNX2lUeQGFDUExJQIu9P5APOI1atit363y5HN0mfl5zKDq%2BE4jXKQUYYULXEuLR2MrIoTdO1qQKdF%2B90MpJqcl6S%2BGmBfF2q12JPX3zbqB4ZZ0IuAhWdWmGBiSA7of0Y0rZT%2Fg2ng%3D%3D&p={“ncSessionID”%3A"5f37688616c3"}&scene=register&asyn=0&lang=cn&v=966&callback=jsonp_" +getNumber(0)

这个curl 就是上个接口初始化的时间戳

getNumber 又是一个新的18位数 。 当然有问可能会说 为什么要传个0过去。。其实这个没啥用。。这个传的只是为了让返回多少位数的字符串。传0会默认18位数的字符串返回

{“success”:true,“result”:{“csessionid”:“01daFf1l9scRU8mRh8M3qJ5_FwsaheIR8Q_QH6pQBeZ1N8ijeHKzmVsBb5h0VNGKUw0guSwCyL-M6JiICtRAJzB0Hzrwy86Xy1xTAvWk_gKd7GvFkZZxe1-O_QT5YJlJFDDQkUdMsptYK_WofEg-msTY3qimr-_g_w-m3mW4nE4pY”,“code”:0,“value”:“05JkRFK6UtwzBZKy3RJfMYNFVZ8MZ3kWefo5Gktd8KxQlNrfF-81bdYmU1cAk0dY6TGjvtpenyARFtQx-bNBp__hk4nGp21K_eENWcsXfJQzBptPb3S5U-qVTGvcE_kUa1f8OK_vIrbixjKx0P2veOw5kYBtxP2svA7zDwMJSgX4-somcC00Xc3bB7XRNv01vAHIBeHhO1pidp4fKNSy0UKwFQxt0IHB424h9I6iv2o3r_CqnIAey3-pOXLwmv704gyes0JUFkmLXxX_bmfQBAeoj0mbvqverSoaLz0Q4YNPa5saSAt98ybKjlhRDRjHufXU34HwOgY2Ys4U1Cq16s1J9k771ducTnB4OC3ZYsaPUU28iFkGIdhIjyXooyj0j7”}}

重点来了 。这个返回的数据就是有用的了。这个接口默认返回的是jsonp的结果。我这边直接切割了下 。所以才会如上展示

csessionid 与value 会在点击确认的时候 有用到。所以要记录下来

那么就到了最后一个接口。。

https://www.qichacha.com/index_verifyAction 这个是post 的接口

curl 是第一步初始化的值

如果正确的话会返回这个

{“msg”:"\u9a8c\u8bc1\u6210\u529f",“success”:true}

错误的话

{“msg”:“滑动验证失败”,“success”:false}

错误请检查cookie .一般会是cookie的问题

最后再重新调用下页面的接口。就能获取到数据页面拉。

这个就是最后我用poi 最后导出的数据,。 需要的话 请留言 我发地址。或者稍后我直接加个git 链接。

最后的最后。给大家个忠告哈。。调用的时候请给个休眠时间。。不然最后就会这样。。

仅供学习参考。如有侵权 请联系本人删除

我去找了下客服。客服反馈的是1个小时内调用次数超过1W次。。。所以大家。。。知道的

本人csdn       https://blog.csdn.net/qq793318828

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容