抓取jsp网页源代码(这段文字是从哪里来的?网页怎么提取文字)
优采云 发布时间: 2021-10-24 04:00抓取jsp网页源代码(这段文字是从哪里来的?网页怎么提取文字)
指导
我们来看一个网页,大家想想怎么用XPath来爬取。如你所见,没有源代码,请抓紧我!本文。这个页面是异步加载的吗?现在让我们看看页面的请求。
我们来看一个网页,大家想想怎么用XPath来爬取。
如你所见,没有源代码,请抓紧我!本文。这个页面是异步加载的吗?现在让我们看一下页面的请求:
该网页没有发起任何 Ajax 请求。那么,这段文字是怎么来的呢?
我们来看看这个页面对应的HTML:
整个 HTML 中甚至没有 JavaScript。那么这段文字是怎么来的呢?
有一点经验的同学不妨看看这个example.css文件,其内容如下:
没错,正文确实来了。其中::after,我们称之为伪元素[1]。
对于伪元素中的文本,应该如何提取?当然,您可以使用正则表达式来提取它。但我们今天不打算谈论这个。
XPath没有办法提取伪元素,因为XPath只能提取Dom树中的内容,而伪元素不属于Dom树,所以无法提取。要提取伪元素,您需要使用 CSS 选择器。
因为网页的 HTML 和 CSS 是分开的。如果我们使用requests或者Scrapy,我们只能分别获取HTML和CSS。单独获取 HTML 没有任何效果,因为数据根本不存在。单独获取css,虽然有数据,但是如果不使用正则表达式,就无法获取里面的数据。所以 BeautifulSoup4 的 CSS 选择器没有效果。所以我们需要将 CSS 和 HTML 放在一起进行渲染,然后使用 JavaScript 的 CSS 选择器来查找需要提取的内容。
首先,让我们来看看。为了提取这个伪元素的值,我们需要如下一段Js代码:
window.getComputedStyle(document.querySelector('.fake_element'),':after').getPropertyValue('content')
其中,ducument.querySelector的第一个参数.fake_element代表fake_element的class属性。第二个参数是伪元素:after。运行效果如下图所示:
为了能够运行这个 JavaScript,我们需要使用一个模拟浏览器,无论是 Selenium 还是 Puppeteer。这里以硒为例。
在Selenium中执行Js,需要用到driver.execute_script()方法,代码如下:
提取内容的最外层会被一对双引号包裹。得到之后,去掉外面的双引号,就是我们在网页上看到的。
原文来自:
来自“ITPUB博客”,链接:,如需转载请注明出处,否则将追究法律责任。