• 欢迎来到本博客,希望可以y一起学习与分享

scrapy进阶(一)–selenium

Python benz 3年前 (2018-10-16) 244次浏览 0个评论 扫描二维码
文章目录[隐藏]

什么是selenium

Selenium (浏览器自动化测试框架)。
Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
更多的测试功能与技巧可以查阅:http://www.51testing.com/zhuanti/selenium.html
下面是Selenium 的工作流程图:

从这张图可以看出,各个编程语言通过编写代码,去调用selenium web driver (驱动)去调用本机的浏览器,模拟人的操作去执行网页的操作。

下载driver驱动

selenium的使用需要下载一个driver,根据浏览器的种类大致有以下驱动:

Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox: https://github.com/mozilla/geckodriver/releases
Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

或者到官方文档提供的下载地址下载:https://selenium-python.readthedocs.io/installation.html#drivers。
下载好的driver是不需要安装的(Windows系统下),找个地方放好就行了,要用到它,是要通过代码调用这个文件的。

什么情况需要用到selenium

有些网站的反爬虫策略比较高级,有些地方是需要人为的操作才能爬取(模拟人的浏览网页操作)。比如,淘宝详情页,他是用js编写的网页,查看网页源码,会发现数据都是通过js动态的填充到指定的位置,所以,你去爬它的网站,是获取不到任何数据的。但是,使用F12打开调试窗口,会发现这个网页却是个数据完整的网页。这是因为,浏览器把网页处理后得到的完整的网页。因此,像这种网站,需要通过浏览器先处理好网页,然后我们在爬取这个处理好的网页。
还有一种是,需要登录的网站,我们可以通过selenium来模拟人的登录。

简单的示例

模拟人为登录知乎

(2018.10.16)知乎的反爬虫策略很高级,selenium模拟登录,会出现报错:Miss argument grant_type 无法成功登录,目前无解。

延迟登陆

在登录新浪微博的时候,页面会进行转跳,导致登录页面加载缓慢,登录页面还没加载就执行后续的登录操作了。可以使用time.sleep(30) 睡30秒,等登录页面加载完全后,再执行登录操作。

selenium自动登录遇到验证码

在账号密码没错的情况下,手动输入验证码,手动点击登录按钮,即可。

执行JavaScript代码

selenium还可以执行JavaScript代码,使用selenium的execute_script(这里写JavaScript代码)即可。这里以执行JavaScript代码来模拟鼠标下拉的操作,来解决网页下拉加载下一页的问题。

设置Chromedriver 不加载图片

有时候,爬虫不需要爬取图片,那么可以禁止加载图片,以加快网页的下载速度,节省不必要的请求,节省等待网页加载的时间,最终,也加快了爬虫的速度。使用到的方法有:

  • chrome_opt = webdriver.ChromeOptions():实例Chrome的设置类:ChromeOptions()
  • chrome_opt.add_experimental_option('prefs',prefs):把设置参数添加到Chromedriver的设置里面
  • webdriver.Chrome(executable_path='D:\chromedriver.exe',chrome_options=chrome_opt):指定参数实例Chromedriver

phantomjs无界面浏览器

phantomjs相对于Chrome等浏览器,是轻量级的,也渲染css与js,效率比较高,适合于无图形界面的操作系统,比如服务器上的Linux类系统。但是,也有较大的缺陷,比如:多进程情况下,phantomjs性能会下降很严重,渲染有时候会出问题,稳定性很差,所以,能用Chrome等浏览器尽量用。

下载phantomjs

到phantomjs官网:http://phantomjs.org/download.html,选择对应的phantomjs进行下载。
下载后解压到一个地方就行了,不需要执行里面任何文件。

selenium使用phantomjs请求网页

PhantomJS也可以设置不请求图片,这个设置就不再往下写了。


文章 scrapy进阶(一)–selenium 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!