最近工作上需要一些企业的详细的数据,工商信息啦,基本信息啦,还有一些关系图(投资关系、人物图谱)之类的,然后我来负责从企查查上弄些数据。
强调:下面只是快速实现数据抓取的思路,没有详细的代码,同时也拒绝伸手党。
现实中,一些工商信息网站会被无数的爬虫“骚扰”,所以网站的反爬虫策略也是越来越高,就拿企查查来说,基本的信息是直接可访问的,但是像人物图谱和企业图谱这些内容还是需要登录的,
特别是人物图谱,非VIP会员,一天也只能看两次
企查查的登录也是做了很多限制
比如图片验证码啊,数字验证码啊,还有验证码异常出现刷新按钮啊等等(之前在做的过程中发现的没有及时截图)
但是有了selenium这些都不是问题~接下来按照如下思维导图做一个抓取的分析(代码想了许久还是不贴出来了)
企查查
登录
滑块验证
首先出场的是滑块验证,这个可以使用Selenium中的Actions.clickAndHold()来破防,打开浏览器Element面板,边滑动滑块边观察Html
这说明滑块不只是单纯的移动到右侧,还导致其他样式改变,这也说明你不能直接通过修改Html的方式改变滑块的位置来验证 ,Ps:有的网站只要滑块在最终的位置,就认为验证通过了。
使用java和selenium模拟滑动滑块
WebElement dragger = driver.findElement(By.cssSelector("#nc_1_n1z")); Actions action = new Actions(driver); action.clickAndHold(dragger).build().perform(); for (int i = 0; i < target; i++) { try { action.moveByOffset(offset, 0).perform(); } catch (Exception e) { e.printStackTrace(); } } |
target 和 offset 的值自己去口算一下~
图片型验证码
不知为何,我每次用代码模拟滑块的时候页面都会弹出图片型验证码,而人工滑动却不要,这让我很费解。
一般像图片型验证码和数字型验证码有的人可能会自己去研究算法来解决,什么机器学习啦,深度学习啦等等。这里不要这么高深的,统统用打码平台,用法和价格自行百度,可以这样理解:你通过Http的方式提交图片和要求,平台会返回给你相应的结果。如数字啦、文字的坐标啦、多个文字的坐标等等。
仔细分析下面的截图所对应的的Element
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。