参考文献

爬虫

  • 爬虫实际上是用浏览器访问的方式模拟了访问网站的过程,整个过程包括三个阶段:打开网页、提取数据和保存数据

  • 在 Python 中,这三个阶段都有对应的工具可以使用。

    • 在“打开网页”这一步骤中,可以使用 Requests 访问页面,得到服务器返回给我们的数据,这里包括 HTML 页面以及 JSON 数据。

    • 在“提取数据”这一步骤中,主要用到了两个工具。针对 HTML 页面,可以使用 XPath 进行元素定位,提取数据;针对 JSON 数据,可以使用 JSON 进行解析。

    • 在最后一步“保存数据”中,我们可以使用 Pandas 保存数据,最后导出 CSV 文件。

Requests访问页面

  • Requests 是 Python HTTP 的客户端库,编写爬虫的时候都会用到,编写起来也很简单。它有两种访问方式:Get 和 Post。这两者最直观的区别就是:Get 把参数包含在 url 中,而 Post 通过 request body 来传递参数.

    1
    2
    3
    r = requests.get('http://www.douban.com')

    r = requests.post('http://xxx.com', data = {'key':'value'})

XPath定位

  • XPath 是 XML 的路径语言,实际上是通过元素和属性进行导航,帮我们定位位置。

    表达式 含义
    node 选node节点的所有子节点
    / 从根节点选取
    // 选取所有的当前节点,不考虑他们的位置
    . 当前节点
    .. 父节点
    @ 属性选择
    ` `
    text() 当前路径下的文本内容

示例

  • xpath('node') 选取了 node 节点的所有子节点;
  • xpath('/div') 从根节点上选取 div 节点;
  • xpath('//div') 选取所有的 div 节点;
  • xpath('./div') 选取当前节点下的 div 节点;
  • xpath('…') 回到上一个节点;
  • xpath('//@id') 选取所有的 id 属性;
  • xpath('//book[@id]') 选取所有拥有名为 id 的属性的 book 元素;
  • xpath('//book[@id=“abc”]') 选取所有 book 元素,且这些 book 元素拥有 id= "abc"的属性;
  • xpath('//book/title | //book/price') 选取 book 元素的所有 title 和 price 元素。

解析库lxml

  • 这个库的解析效率非常高,使用起来也很简便,只需要调用 HTML 解析命令即可,然后再对 HTML 进行 XPath 函数的调用。