Python3网络爬虫(九):使用Selenium爬取百度文库word文章

转载请注明作者和出处: http://blog.csdn.net/c406495762
运行平台: Windows
Python版本: Python3.x
IDE: Sublime text3

  • 前言
  • 问题分析
  • 预备知识
    • 1 Selenium
      • 11 简介
      • 12 安装
      • 13 基础知识
        • 131 小试牛刀
        • 132 模拟提交
        • 133 元素选取
        • 134 界面交互
        • 135 添加User-Agent
    • 2 Xpath
  • 动手实战
    • 1 页面切换
    • 2 内容爬取
    • 3 整体代码
  • 总结

1 前言

    大家都应该有过从百度文库下载东西的经历,对于下载需要下载券的文章,我们可以办理文库VIP(土豪的选择):

Python3网络爬虫(九):使用Selenium爬取百度文库word文章

    我想,看到这样的一个文章,如果爬取当前页面的内容还是很好爬的吧。感觉so easy!至少我当时是这么想的,但是当把文章翻到最下方的时候,我看到了如下内容:

Python3网络爬虫(九):使用Selenium爬取百度文库word文章

    Request URL这么长!!最后的expire时间信息好解决,其他的信息呢想做无谓的挣扎,因此,我果断地放弃这个方法。

    问题:获取当前页的内容好办,怎么获取接下来页面的内容/p>

    带着这个思考,Selenium神器走入了我的视线。

3 预备知识

3.1 Selenium

3.1.1 简介

    Selenium 是什么句话,自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。换句话说叫 Selenium 支持这些浏览器驱动。Selenium支持多种语言开发,比如 Java,C,Ruby等等,而对于Python,当然也是支持的!

3.1.2 安装

3.1.3 基础知识

    详细内容可查看官网文档:http://selenium-python.readthedocs.io/index.html

3.1.3.1 小试牛刀

    我们先来一个小例子感受一下 Selenium,这里我们用 Chrome 浏览器来测试。

    运行这段代码,会自动打开浏览器,然后访问百度。

    如果程序执行错误,浏览器没有打开,那么应该是没有装 Chrome 浏览器或者 Chrome 驱动没有配置在环境变量里。下载驱动,然后将驱动文件路径配置在环境变量即可。

    驱动下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads

    windows下设置环境变量的方法:

    ,输入,点击确定,出现如下对话框:

Python3网络爬虫(九):使用Selenium爬取百度文库word文章

3.1.3.2 模拟提交

    下面的代码实现了模拟提交提交搜索的功能,首先等页面加载完成,然后输入到搜索框文本,点击提交,然后使用page_source打印提交后的页面的信息。

    全自动的哦,程序操控!是不是很酷炫/p>

Python3网络爬虫(九):使用Selenium爬取百度文库word文章

    Selenium就先介绍这么多,对于本次实战内容,已经足够。那么接下来,让我们聊聊xpath。

3.2 Xpath

    这个方法是非常强大的元素查找方式,使用这种方法几乎可以定位到页面上的任意元素。在正式开始使用XPath进行定位前,我们先了解下什么是XPath。XPath是XML Path的简称,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素。

    假设我们现在以图所示HTML代码为例,要引用对应的对象,XPath语法如下:

Python3网络爬虫(九):使用Selenium爬取百度文库word文章     如果我们现在要引用id为“J_password”的input元素,该怎么写呢们可以像下面这样写:

    也可以写成:

    这里解释一下,其中这一段是指在根元素下查找任意id为的元素,此时相当于引用到了form元素。后面的路径必须按照源码的层级依次往下写。按照图(3)所示代码中,我们要找的input元素包含在一个dt标签内,而dt又包含在dl标签内,所以中间必须写上dl和dt两层,才到input这层。当然我们也可以用*号省略具体的标签名称,但元素的层级关系必须体现出来,比如我们不能写成,这样肯定会报错的。

    前面讲的都是xpath中基于准确元素属性的定位,其实xpath作为定位神器也可以用于模糊匹配。本次实战,可以进行准确元素定位,因此就不讲模糊匹配了。如果有兴趣,可以自行了解。

4 动手实战

    以上面提到的文章为例,进行爬取讲解。URL : https://wenku.baidu.com/view/aa31a84bcf84b9d528ea7a2c.html

4.1 页面切换

    由于网页的百度文库页面复杂,可能抓取内容不全,因此使用User-Agent,模拟手机登录,然后打印文章标题,文章页数,并进行翻页。先看下这个网站。

Python3网络爬虫(九):使用Selenium爬取百度文库word文章 Python3网络爬虫(九):使用Selenium爬取百度文库word文章

4.2 内容爬取

    爬取内容这里,使用之前重点讲过的BeautifulSoup就可以。这里不再细奖,审查元素,自己分析下就有了。代码如下:

来源:Jack-Cui

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年4月13日
下一篇 2017年4月13日

相关推荐