nodejs抓取动态网页(从信息抓取和提取,静态页面分析和互动这三个方面再讨论一下)

优采云 发布时间: 2021-11-02 05:15

  nodejs抓取动态网页(从信息抓取和提取,静态页面分析和互动这三个方面再讨论一下)

  爬虫是一个非常复杂的系统,可以从许多不同的角度进行分类。之前的一些答案已经涵盖了很多。我想从信息捕获和提取、手动编码和可视化、静态页面分析和交互开始。再讨论。

  1. 信息捕获和提取

  信息抓取是指如何获取网站上的信息的过程,信息抽取是指如何从获取到的页面中识别出自己需要的信息的过程。当使用爬虫爬取单个或少量网站时,那么主要问题是解决爬取问题,而当目标数网站较大时,信息抽取成为主要矛盾.

  比如Scrapy就是一个解决信息爬取问题的软件平台。使用Xpath或者CSS Selector可以从少量的站点中提取信息,但是面对*敏*感*词*的信息提取,Xpath是无能为力的。在这种情况下,一些机器学习算法,比如IBL(Instance based Learning),可以根据一定的网站一页或少量的页面进行学习,然后快速生成网站识别模型,scrapely 就是这样一个软件模块。

  2. 手动编码和可视化

  我们在网上看到的大部分教程都是基于某种编程语言(如Python)和软件库(如Scrapy)手工编写的。这种方法的优点是非常灵活、可扩展,并且可以针对特定站点给出有效的实现。但它的缺点也很明显,就是爬虫开发者需要懂编程语言,门槛比较高。

  为了解决这个问题,人们提出了视觉爬虫。定义可视化爬虫时,会直观地显示远程网站页面,然后人们可以点击鼠标定义爬取逻辑(包括爬取Fetching目标、爬取顺序、爬取深度等)和爬取逻辑(页面的哪一部分应该被识别为属性)。与手工编码的爬虫相比,视觉爬虫大大降低了爬虫定义的门槛,但爬虫的效率不如手工编程。另外,由于可视化爬虫对爬取逻辑进行了抽象,可能无法支持一些特殊的网站。

  Portia 是典型的视觉爬虫。人们常常认为pyspider也是一个视觉爬虫,其实不然。Pyspider 只是一个带有 GUI 的手工编码爬虫。

  3.被动爬虫和交互式爬虫

  大多数爬虫都是基于对页面的分析。如有必要,浏览器引擎会执行页面中的Javascript代码,然后获取渲染的页面,然后从中提取自己需要的信息。

  但是在某些情况下,我们也需要能够和这些页面进行交互,比如输入用户名和密码登录系统然后爬取,或者我们需要输入关键字然后才爬取搜索结果。在这些情况下,我们需要能够在定义爬虫时保存这些用户输入,然后在爬虫执行期间重放交互信息,就像一个人在做这些动作一样。

  Selenium 就是这种爬虫的一个例子。用户使用 Selenium IDE 记录用户操作,将它们保存为 Selenese 命令序列,然后使用 Web 驱动程序模拟浏览器重放这些命令。交互式爬虫的优点是可以像人一样做出各种动作,但缺点是需要搭建一个完整的浏览器引擎,系统开销很大,爬虫效率很低。

  最后,为了做个广告,我最近开源了一个爬虫portia-dashboard。按照之前的分类方法,这款爬虫是“面向多站点”、“主要支持信息爬取”、“同时支持被动爬取”和“交互爬取”“可视化”爬虫,并提供了一个仪表盘功能。 Portia.dashboard可以用来部署爬虫、启动爬虫、监控爬虫状态、浏览提取的信息等等。

  使用代码安装可能有点复杂,最简单的方法是使用docker,欢迎大家使用,并提供宝贵意见。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线