抓取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博客”,链接:,如需转载请注明出处,否则将追究法律责任。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线