selenium通过人机验证爬虫

selenium通过人机验证爬虫,第1张

之前在学校曾经用过request+xpath的方法做过一些爬虫脚本来玩,从ios正式转前端之后,出于兴趣,我对爬虫和反爬虫又做了一些了解,然后发现了selenium这个神器。selenium原本是一款测试工具,但由于他可以较好的模拟浏览器的各种 *** 作,完全无视对于user-agent的限制,所以现在被更多的用于爬虫脚本中。这里记录一下借助selenium库进行爬虫时碰到的一些问题以及解决方法。(拒绝恶意爬虫从我做起)

selenium的安装不多说, pip install selenium就行。不过要注意自己的python版本,要是3x才行。用它打开浏览器,然后通过dom *** 作获取需要的dom节点。

如果需要登录的,也可以事先将账号密码写好,然后用send_keys方法进行自动输入。

然后需要什么就直接通过dom方法来获取。不过现在很多网站的url有防爬处理,使用了不规律的url,无法像豆瓣排行榜那样直接遍历。但这个不难,用selenium就是要模拟人的 *** 作的,真人 *** 作的时候也不会直接输url来一页一页看,比如在线阅读的网站,一般都会有个目录页。先爬取目录页面的信息,先将正文url列表保存下来,然后再遍历列表就行。

这里有个sleep,目的是是确保目录页能完全加载完。当然这个方法有点蠢,后面我使用了不同的方法来做页面加载完成的判断。

页面加载完成需要时间,一定要等页面加载好了才能获取页面元素。而直接设置一个固定的sleep显然是效率极低且容易出错的。这里有几种不同的方法来自动判断页面加载的情况。

监视我最终需要的元素有没有加载完成,加载完成了就开始后续 *** 作。比如我要的dom节点有一个类名为'page-content',并且在整个页面中一共有两处,而我需要的是第二处。那就可以监视这个节点的加载情况。

这里设置了05秒的刷新周期,当然可以设置的更短,然后设置了10秒的timeout,超时自动打开下一章。

这就很简单了,就一句话,最多等10秒,进行下一步。要是提前加载完就提前进行。这个方便是方便,但是不好用,他会等页面完全加载完才进行下一步,而事实上我只需要等正文加载完就行,所以效率上要差一点。

显性等待的好处就是可以在我需要的元素加载完的时候就进入下一步,获取元素内容,但是也有不好的地方,那就是还不够灵活。显性等待在超时的时候会抛出TimeoutException异常,在暴露的接口中没有给我定义异常处理的地方,这也是我选择自己实现一遍等待机制的原因,这样我可以对超时的异常进行处理。

很多时候,我们会发现,在登录账号时,系统会要我们输入验证码。如果想要让脚本自动识别验证码,可能就涉及到图像识别技术,还有一些第三方的服务可以使用,也是可行的。

但有的时候,网站会使用更为复杂的人机验证。比如这样的:

爬虫当中的cookie的作用

1 模拟登录 (有的网站你加上cookie也登录不了)

2 反反爬(检查cookie),可以定期自动更新cookies,躲避反爬机制

先登陆qzoneqqcom, 然后右键检查,找到登陆面板 iframe 并且获取 src属性内的 URL

爬取时间:2021/01/27

系统环境:Windows 10

所用工具:Jupyter Notebook\Python 30

涉及的库:selenium\time\pandas\matplotlib\jieba\stylecloud

蛋肥想法: 借助selenium,实现对“查看更多”的自动点击,目标是获取2020年的文章相关数据。

蛋肥想法: 36氪的数据很满足强迫症,没有空格换行,只需筛选出2020年的数据保存。

蛋肥想法: 此次重点是学习selenium,所以只简单做一下数据可视化。

第一种用jQuery的val方法:

js = "return $('input')val();"

driverexecute_script(js)

第二种用jQuery的attr方法:

js = "return $('input')attr('value');"

driverexecute_script(js)

第三种用selenium自带的方法:

driverfind_element_by_tag_name('input')get_attribute('value')

1、直接打开selenium的主界面,按照File→New→Class的顺序进行点击。

2、下一步,需要在d出的窗口中设置相关内容并确定创建。

3、这个时候,输入获取元素属性的对应代码。

4、如果没问题,就按照图示启用取得id值的功能。

5、等完成上述 *** 作以后,继续通过对应网页选择图示按钮跳转。

6、这样一来会得到相关结果,即可达到目的了。

以上就是关于selenium通过人机验证爬虫全部的内容,包括:selenium通过人机验证爬虫、爬虫思路——Selenium获取Cookies、Python爬虫实战(3)selenium完成瀑布流数据爬取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9427916.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存