Springboot与Selenium合体变蜘蛛爬企查查

发表于:2018-1-11 10:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:冬天只爱早晨    来源:简书

分享:
  我们可以看出验证要求在青色横条中,而目标文字在下面的方块中,这是两个不同的Element,而打码平台的要求是给他一张完整的图片,这个当时我想都没想,立即决定使用selenium截图的方式将横条和方块分别保存下来,然后通过代码将其拼接为一张图片,最后将一整张图提交给打码平台。如下
 
  然后平台会返回给你一个坐标如(x,y),刚刚提到了方块图他是单独的一个Element,所以目标y还要减去横条的高度即(x,y-34),这个时候你以为搞定了?NoNoNo!通过浏览器的定位元素,可以看到
 
  方块所在的Elemnt 有个样式margin-left,所以我们还要减去这个值,即最终的最标为(x + 2, y - 34)为什么是2而不是10,这个是因为我尝试了很多次,发现2才可以。。。
  好了接下来就是根据坐标去点击,要用到这个方法:
  Actions action = new Actions(driver);
  action.moveToElement(bodyImgEle, x + 2, y - 34).click().perform();
  这里注意下,moveToElement是以element的左上角为原点,往右是X,往下是Y
  数字验证码
  (没有截图,只有代码截的图)
 
  这样的就很普通了,我们依然交给打码平台,通过使用返回的“MV9C”来通过此验证。
  异常刷新
  (这个也没有截图)出现这种情况我猜测是企查查检测到你这边频繁的登录或验证,形式就是滑动条上出现了“刷新”超链接,这个只要定为到“刷新”Element,点击一下就ok,如下
  WebElement err = reloadElement.findElement(By.cssSelector("#dom_id_one > div > span > a"));
  err.click();
  注意:登录的过程中每一个验证都可能有失败的情况,所以每个处理最好加上一个循环,直到验证通过再跳出循环进入下一步操作
  抓取数据
  这里重点讲企业详情页
  对于企查查来说只要登录这块搞定了,其他数据不是问题,就是简单的分析下每个数据的请求地址,然后用selenium模拟请求就行了。
  人物图谱
 
  URL:http://www.qichacha.com/company_opercorview?name=马化腾&personId=p03cf330a686332cfe9cb8f36a8f3ab8&keyno=f1c5372005e04ba99175d5fd3db7b8fc
  投资图谱
  
  URL:http://www.qichacha.com/company_relation?keyNo=f1c5372005e04ba99175d5fd3db7b8fc&name=深圳市腾讯计算机系统有限公司
  很直观的就能看到请求地址,然后将返回的JSON字符串处理一下,就得到了你想要的数据
  这里不做太多的赘述。
  贴个控制台的图
  
  总结
  总的来讲企查查的网站相对于天眼查还是比较容易突破的,只要把登录这块完美处理好,其他就是解析上的问题了。
  话说企查查并没有对访问IP做限制处理,只是如果用一个账号访问次数太多之后,中间也会出现滑块认证,但是不要担心,你可以把登录那块的验证逻辑直接搬过来即可,你敢信?

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • yangheng0301
    2018-10-23 10:39:46

    大神您好,可以请教您一些问题吗?麻烦加下我qq 394286561

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号