如何让爬虫正确提取伪元素
我们来看一个网页,大家想想使用 XPath 怎么抓取。可以看到,在源代码里面没有请抓取我!这段文字。难道这个网页是异步加载?我们现在来看一下网页的请求。 我们来看一个网页,大家想想使用 XPath 怎么抓取。 可以看到,在源代码里面没有请抓取我!这段文字。难道这个网页是异步加载?我们现在来看一下网页的请求: 网页也没有发起任何的Ajax 请求。那么,这段文字是从哪里来的? 我们来看一下这个网页对应的 HTML: 整个 HTML 里面,甚至连 JavaScript 都没有。那么这段文字是哪里来的呢? 有点经验的同学,可能会想到看一下这个example.css文件,其内容如下: 没错,文字确实在这里面。其中::after,我们称之为伪元素(Pseudo-element)[1]。 对于伪元素里面的文字,应该如何提取呢?当然,你可以使用正则表达式来提取。不过我们今天不准备讲这个。 XPath 没有办法提取伪元素,因为 XPath 只能提取 Dom 树中的内容,但是伪元素是不属于 Dom 树的,因此无法提取。要提取伪元素,需要使用 CSS 选择器。 由于网页的 HTML 与 CSS 是分开的。如果我们使用 requests 或者 Scrapy,只能单独拿到 HTML 和 CSS。单独拿到 HTML 没有任何作用,因为数据根本不在里面。单独拿到 CSS,虽然有数据,但如果不用正则表达式的话