selenium 文档 crawlab 爬虫部署平台,有中文文档,编写好之后可以使用该平台部署爬虫,每个爬虫的文件都是独占的。不能共享(包括相同的工具类等)

selenium 是支持 web 浏览器自动化的一系列工具和库的综合项目。Selenium 的核心是 WebDriver,这是一个编写指令集的接口,可以在许多浏览器中互换运行。

在 windows 上来说,开始运行后,会打开一个浏览器然后里面展示网页,如下图所示
image.png
可以通过 WebDriver 发起指令,比如:打开一个指定的网址、点击上面的一个按钮等。

然后就可以利用它的这些特性,来完成爬虫的功能。

XPath 入门

W3school 入门 XPath 教程
下面是最常用的节点选取

表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。

对于这个例子来说

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <bookstore>
  3. <book>
  4. <title lang="eng">Harry Potter</title>
  5. <price>29.99</price>
  6. </book>
  7. <book>
  8. <title lang="eng">Learning XML</title>
  9. <price>39.95</price>
  10. </book>
  11. </bookstore>
路径表达式 结果
bookstore 选取 bookstore 元素的所有子节点。
/bookstore 选取根元素 bookstore。
注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。
//book 选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
//@lang 选取名为 lang 的所有属性。@lang=’xxx’ 则表示完全符合这个相等

但是对于包含某一个 CSS 的场景,就需要借助 XPath 的 函数 功能了,比如下面这个需求

  1. // 所有 class 属性包含 self-end 值的 div,并且查找该 div 下的所有 class 包含 P2-Regular 值的 div 元素
  2. //div[contains(@class,'self-end')]//div[contains(@class,'P2-Regular')]