什么是Selenium
我们知道,网页会使用Java加载数据,对应于这种模式,能够最终靠分析数据接口来进行直接抓取,这样的形式需要对网页的内容、格式和Java代码有所研究才能顺利完成。但有时还会碰到另外一些页面,这些页面同样使用AJAX技术,但是其页面结构很复杂,很多网页中的关键数据由AJAX获得,而页面元素本身也使用Java来添加或修改,甚至于人们感兴趣的内容在原始页面中并不出现,有必要进行一定的用户交互(如不断下拉滚动条)才会显示。对这种情况,为了方便,就会考虑使用模拟浏览器的方法来进行抓取,而不是通过“逆向工程”去分析AJAX接口,使用模拟浏览器的方法,特点是普适性强,开发耗时短,抓取耗时长(模拟浏览器的性能问题始终令人忧虑),使用分析AJAX的方法,特点则刚好与模拟浏览器相反,甚至在同一个网站、同一个类别中的不同网页上,AJAX数据的具体访问信息都有差别,因此开发过程投入的时间和精力成本是比较大的。如果碰到页面结构相对复杂或者AJAX数据分析很难(如数据经过加密)的情况,就需要仔细考虑使用浏览器模拟的方式了。
在Python模拟浏览器进行数据抓取方面,Selenium永远是绕不过去的一个坎。Selenium(意为化学元素“硒”)是浏览器自动化工具,在设计之初是为了进行浏览器的功能测试。Selenium的作用,直观地说,就是使得操纵浏览器进行一些类似普通用户的操作成为可能,如访问某个地址、判断网页状态、单击网页中的某个元素(按钮)等。使用Selenium来操控浏览器进行的数据抓取其实已经不能算是一种“爬虫”程序,一般谈到爬虫,自然想到的是独立于浏览器之外的程序,但无论如何,这种方法有助于解决一些很复杂的网页抓取任务,由于直接用了浏览器,麻烦的AJAX数据和Java动态页面一般都已经渲染完成,利用一些函数,可完全做到随心所欲地抓取,加之开发流程也最简单,因此有必要进行基本的介绍。
Selenium本身只是个工具,而不是一个具体的浏览器,但是Selenium支持包括Chrome和Firefox在内的主流浏览器。为了在Python中使用Selenium,要安设selenium库(仍然通过pip install selenium的方式来进行安装)。完成安装后,为使用特定的浏览器,在大多数情况下要下载对应的驱动。将下载到的文件放在某个路径下。并在程序中指明该路径即可。如果想避免每次配置路径的麻烦,可以将该路径设置为环境变量,这里就不再赘述了。
运行上面的代码,会看到Chrome程序被打开,浏览器访问了百度首页,然后跳转到了百度新闻页面,之后又选择了该页面的第一个头条新闻,从而打开了新的新闻页。一段时间后,浏览器关闭并退出。控制台会输出“,”(对应browser.title)和对应browser.current_url)。这无疑是一个好消息,如果能获取对浏览器的控制权,那么爬取某一部分的内容会变得如臂使指。
另外,selenium库可提供实时网页源码,这使得通过结合Selenium和BeautifulSoup(以及其他上文所述的网页元素解析方法)成为可能,如果对selenium库自带的元素定位API不甚满意,那么这会是一个非常好的选择。总的来说,使用selenium库的主要步骤如下。
④ 网页交互,对元素进行输入、选择等操作。如访问豆瓣并搜索某一关键字(效果见图1-9)的代码如下。
之前曾对Selenium的基本使用做过简单的说明,有了网站交互(而不是典型爬虫程序避开浏览器界面的策略)还能完成很多测试工作,如找出异常表单、HTML排版错误、页面交互问题。
提供源码、380分钟视频,基础知识与丰富的Python爬虫实战案例相结合
本书将以Python语言为基础,由浅入深地探讨网络爬虫技术,同时,通过具体的程序编写和实践来帮助读者了解和学习Python爬虫。
本书共包含20个案例,从内容上分为四部分,分别代表不同的爬虫阶段及场景,包括了Python爬虫编写的基础知识,以及对爬虫数据的存储、深入处理和分析。
第一部分爬虫基础篇。该部分粗略地介绍了爬虫的基本知识,便于读者掌握相关知识,对爬虫有基本的认识。
第二部分实战基础篇(9个案例)。该部分既有简单、容易实现的入门案例,也有改进的进阶案例。丰富的内容有爬虫常用的多种工具及方法,覆盖了爬虫的请求、解析、清洗、入库等全部常用流程,是入门实践的最佳选择。
第三部分框架应用篇(5个案例)。该部分内容从爬虫框架的方面出发,介绍了几个常用框架的案例,重点介绍了Scrapy框架,以及基于Python 3后的新特性的框架,如Gain和PySpider等,同时也对高并发应用场景下的异步爬虫做了案例解析,是不容错过的精彩内容。
第四部分爬虫应用场景及数据处理篇(6个案例)。该部分内容从实际应用的方面出发,通过不同的案例展示了爬虫爬取的数据的应用场景以及针对爬虫数据的数据分析,可以让读者体会到爬虫在不同场景上的应用,从另一个角度展示了爬虫的魅力,可以给读者带来一些新的思考。
这四部分由浅入深地介绍了爬虫常用的方法和工具,以及对爬虫数据处理的应用和实现。但必须要格外注意的是,爬虫的技术栈不仅仅包含这几部分,而且在实际在做的工作中的细分方法也不完全一样。本书只是对目前爬虫技术中最常见的一些知识点,用案例的形式进行了分类和讲解,而更多的应用也值得读者在掌握一定的基础技能后进一步探索。返回搜狐,查看更加多