Selenium自己不带浏览器,它需要与第三方浏览器结合在一起使用。例如,如果你在Firefox上运行Selenium,可以直接看到Firefox窗口被打开,进入网站,然后执行你在代码中设置的动作。虽然这样可以看得更清楚,但是我更喜欢让程序在后台运行,所以我PhantomJS()代替真实的浏览器。
PhantomJS是一个“无头”(headless)浏览器。它会把网站加载到内存并执行页面上的JavaScript,但不会向用户展示网页的图形界面。将Selenium和PhantomJS结合在一起,就可以运行一个非常强大的网络爬虫了,可以处理cookie、JavaScrip、header,以及任何你需要做的事情。
可以从PyPI网站(https://pypi.python.org/simple/selenium/)下载Selenium库,也可以用第三方管理器(像pip)用命令行安装。
你可以对任意网站(本例用的是)调用webdriver的get_cookie()方法来查看cookie:

这样就可以获得一个非常典型的Google Analytics的cookie列表:

还可以调用deletecookie()、addcookie()和deleteallcookies()方法来处理cookie。另外,还可以保存cookie以备其他网络爬虫使用。下面的例子演示了如何把这些函数组合在一起:

在这个例子中,第一个webdriver获得了一个网站,打印cookie并把它们保存到变量savedCookies里。第二个webdriver加载同一个网站(技术提示:必须首先加载网站,这样Selenium才能知道cookie属于哪个网站,即使加载网站的行为对我们没任何用处),删除所有的cookie,然后替换成第一个webdriver得到的cookie。当再次加载这个页面时,两组cookie的时间戳、源代码和其他信息应该完全一致。从GoogleAnalytics的角度看,第二个webdriver现在和第一个webdriver完全一样。
3.正常的时间访问路径
有一些防护措施完备的网站可能会阻止你快速地提交表单,或者快速地与网站进行交互。即使没有这些安全措施,用一个比普通人快很多的速度从一个网站下载大量信息也可能让自己被网站封杀。
因此,虽然多线程程序可能是一个快速加载页面的好办法——在一个线程中处理数据,另一个线程中加载页面——但是这对编写好的爬虫来说是恐怖的策略。还是应该尽量保证一次加载页面加载且数据请求最小化。如果条件允许,尽量为每个页面访问增加一点儿时间间隔,即使你要增加一行代码:
**
time.sleep(3)
(小编:3 随机数 是不是更好一些?)
**
合理控制速度是你不应该破坏的规则。过度消耗别人的服务器资源会让你置身于非法境地,更严重的是这么做可能会把一个小型网站拖垮甚至下线。拖垮网站是的,是彻头彻尾的错误。所以请控制采集速度!
常见表单反爬虫安全措施解密
许多像Litmus之类的测试工具已经用了很多年了,现在仍用于区分网络爬虫和使用浏览器的人类访问者,这类手段都取得了不同程度的效果。虽然网络机器人下载一些公开的文章和博文并不是什么大事,但是如果网络机器人在你的网站上创造了几千个账号并开始向所有用户发送垃圾邮件,就是一个大问题了。网络表单,尤其是那些用于账号创建和登录的网站,如果被机器人肆意地滥用,网站的安全和流量费用就会面临严重威胁,因此努力限制网站的接入是最符合许多网站所有者的利益的(至少他们这么认为)。
这些集中在表单和登录环节上的反机器人安全措施,对网络爬虫来说确实是严重的挑战。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-56071-3.html
我不网购
1990年的马云说这句话
这些军舰有什么用