使用ScrapySharp快速从网页中采集数据的采集方案(一)

优采云 发布时间: 2021-06-16 20:17

  使用ScrapySharp快速从网页中采集数据的采集方案(一)

  在上一篇文章中,我介绍了使用ScrapySharp从网页中快速获取采集数据。该方法是通过直接Http请求获取原创页面信息。对于静态网页非常有效,但是网站中的很多页面内容并没有全部存储在原创页面中。很多内容是通过javascript动态生成的,这些数据是不能用前面的方法捕获的。这里简单介绍一下动态网页的采集方案。

  对于采集这样的网页数据,往往使用浏览器引擎加载整个页面,加载后输出完整的页面,然后使用ScrapySharp等工具进行分析。有几种常用的方法:

  使用网页浏览器控件

  相信大多数 .Net 开发人员都使用这种方法。由于WebBrowser直接使用与操作系统集成的IE浏览器,无需下载第三方控件,相对简单快捷。但它只是一个用于展示的控件,并没有提供很多接口。集成一些扩展很麻烦。

  使用网页浏览器

  PhantomJS 是一个具有 Webkit 核心的无界面浏览器。它的特点之一是可以非常方便地集成javascript脚本,因此开发扩展更加方便,在服务器端使用UI控件也非常方便。用。目前,这些解决方案大多也在互联网上使用。在这里把我读过的几篇文章的文章转写一下,就不做详细介绍了:

  程序本身比较方便,功能强大,但是在试用过程中还是存在一些问题。比如有些网页不是很规范,不能正确解析,或者有乱码。

  使用 CEF 控制

  CEF 是 Chromium 嵌入式框架,是 Google 提供的 Chrome 集成解决方案。它提供了一个较低级别的 API,我们可以进行更强大的自定义(当然,它也需要更多的工作)。比如不是采集图片,是为了加快对内容的分析。

  直接分析Javascript模拟渲染

  上述方案虽然可以简单正确地获取解析出的完整页面,但是存在一个性能问题:很慢。虽然浏览器的开发者都是顶级高手,但是由于页面的渲染本身就是一个非常复杂的过程,用上面的工具完全渲染一个页面还是需要几秒钟的时间,而且资源开销不小,不能支持*敏*感*词*数据。 采集。

  在大多数情况下,这不是什么大问题,但是如果你更关心性能问题,还有一个更原创的解决方法,那就是分析网页的JS工作原理,并模拟浏览器的执行只是内容。相关JS,手动获取输出内容。

  这样,主要需要一个javascript引擎。已经有大量的js引擎可以使用,基本没问题。其主要问题在于需要对网页的分析进行自定义,而这些网页的JS大多采用了一定的混淆策略,不易分析,往往需要花费大量的时间来调试。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线