网页新闻抓取(采用AJAX技术的网站越来越多,我们有必要通过更多案例讲解)

优采云 发布时间: 2022-03-18 13:34

  网页新闻抓取(采用AJAX技术的网站越来越多,我们有必要通过更多案例讲解)

  越来越多的网站在使用AJAX技术,我们有必要通过更多的案例来说明如何准确捕捉Javascript/JS动态生成的内容。这次我们要在cnbeta网站上抓取数字产品新闻。进入这个网站的首页,可以看到一个新闻列表,列表中有多条新闻,每条包括标题、基本信息和摘要。用浏览器访问这个网页,发现新闻列表的第一页和普通网页一样。翻到第二页后,使用浏览器的查看源代码功能,无论现在看到哪个页面,都可以看到HTML源代码没有变化。分页,HTML源代码仍然是第一页。原来 网站 翻页时应使用Javascript动态刷新新闻列表。这种情况会阻碍普通网络爬虫和普通网络爬虫的工作,因为这类网络爬虫一般会向目标服务器发送HTTP GET。消息,获取 HTML 文档,然后使用正则表达式或 DOM 解析方法提取网页上的内容。当需要跳转到其他页面时,由于其他页面没有独立的URL网址,无法发送HTTP GET消息,只能通过人工干预,嗅探Javascript发送给网站的消息是什么,通过获取其他分页内容模拟消息。使用 MetaSeeker 网络爬虫,可以完全抛弃嗅探方式,像爬取普通网页一样爬取 AJAX网站 内容。这种情况会阻碍普通网络爬虫和普通网络爬虫的工作,因为这类网络爬虫一般会向目标服务器发送HTTP GET。消息,获取 HTML 文档,然后使用正则表达式或 DOM 解析方法提取网页上的内容。当需要跳转到其他页面时,由于其他页面没有独立的URL网址,无法发送HTTP GET消息,只能通过人工干预,嗅探Javascript发送给网站的消息是什么,通过获取其他分页内容模拟消息。使用 MetaSeeker 网络爬虫,可以完全抛弃嗅探方式,像爬取普通网页一样爬取 AJAX网站 内容。这种情况会阻碍普通网络爬虫和普通网络爬虫的工作,因为这类网络爬虫一般会向目标服务器发送HTTP GET。消息,获取 HTML 文档,然后使用正则表达式或 DOM 解析方法提取网页上的内容。当需要跳转到其他页面时,由于其他页面没有独立的URL网址,无法发送HTTP GET消息,只能通过人工干预,嗅探Javascript发送给网站的消息是什么,通过获取其他分页内容模拟消息。使用 MetaSeeker 网络爬虫,可以完全抛弃嗅探方式,像爬取普通网页一样爬取 AJAX网站 内容。获取 HTML 文档,然后使用正则表达式或 DOM 解析方法提取网页上的内容。当需要跳转到其他页面时,由于其他页面没有独立的URL网址,无法发送HTTP GET消息,只能通过人工干预,嗅探Javascript发送给网站的消息是什么,通过获取其他分页内容模拟消息。使用 MetaSeeker 网络爬虫,可以完全抛弃嗅探方式,像爬取普通网页一样爬取 AJAX网站 内容。获取 HTML 文档,然后使用正则表达式或 DOM 解析方法提取网页上的内容。当需要跳转到其他页面时,由于其他页面没有独立的URL网址,无法发送HTTP GET消息,只能通过人工干预,嗅探Javascript发送给网站的消息是什么,通过获取其他分页内容模拟消息。使用 MetaSeeker 网络爬虫,可以完全抛弃嗅探方式,像爬取普通网页一样爬取 AJAX网站 内容。嗅探 Javascript 发送给 网站 的消息,并通过模拟消息获取其他分页内容。使用 MetaSeeker 网络爬虫,可以完全抛弃嗅探方式,像爬取普通网页一样爬取 AJAX网站 内容。嗅探 Javascript 发送给 网站 的消息,并通过模拟消息获取其他分页内容。使用 MetaSeeker 网络爬虫,可以完全抛弃嗅探方式,像爬取普通网页一样爬取 AJAX网站 内容。

  本文还将讲解另一种爬取技巧:在翻转新闻列表时,假设某个页面中的新闻之前已经被爬取过,停止向下翻页,即只抓取最新的新闻。它是追踪论坛、博客、微博、新闻网站等最常用的技术,也是构建企业竞争情报系统必不可少的功能。

  爬取目标分析:

  翻转和抓取多个页面。之前爬取二级URL时,停止爬取进程

  注1:可以使用MetaStudio加载信息结构demo_cnbeta_list,阅读起来比较容易理解。请注意,着陆页的结构可能会发生变化,这可能会导致信息结构加载不成功。请参考“修改无效信息结构”修改信息结构。

  注意 2:本文不是介绍性教程。如果您对 MetaSeeker 不熟悉,建议按照章节顺序阅读《MetaSeeker 崩溃手册》。

  1 获取新闻摘要数据

  

  ͼ1

  首先,需要定义数据抓取规则。所谓数据抓取规则,就是指定如何从网页中抓取新闻列表数据。图1展示了数据映射和FreeFormat映射的过程,主要包括以下步骤:

  以新闻列表中的第一条新闻为例,对其进行数据映射和FreeFormat映射。为了获取新闻数据,需要进行数据映射和FreeFormat映射,其中FreeFormat映射不是必须的,如果网页具有表示DOM节点的语义,可以使用@class或@id属性来精确定位被抓取的内容,然后执行 FreeFormat 映射。详细操作流程请参考《捕捉京东商品价格》。为了捕捉新闻列表中的每一条新闻,都要进行FreeFormat映射,也就是所谓的多实例捕捉。FreeFormat映射不是唯一的方法,这个页面的每条新闻都有@class="newslist",非常适合爬取多个实例。如果没有合适的 FreeFormat,您可以使用示例复制方法。请参考“捕获当当商品价格”设置至少一个信息属性的关键属性。关键属性的描述请参考《MetaStudio 用户手册》。设置关键特性后,DataScraper 可以运行在加速模式,提高爬取速度。如果DataScraper菜单项“Configuration”->“Normal Mode”没有勾选,DataScraper进入加速模式。

  2 获取新闻详情页面

  

  ͼ2

  我们已经在《分级抓取》一文中讲过如何抓取二级话题的线索。图2展示了再次抓取下一级线索的方法。信息类线索,在线索编辑器工作台上,将下一级主题命名为demo_cnbeta_detail(如图3)所示)。

  

  ͼ3

  定义 Info 类线程的目的有两个:

  进行分层爬取,爬取新闻列表再爬取详细的新闻内容为了避免重复爬取,当发现重复率超过设定时终止爬取过程,将在后续章节详细讲解

  3 翻转和爬取多个页面

  

  ͼ4

  为了翻转和抓取所有页面,需要创建一个线索。图 4 显示了主要步骤。详情请参阅《爬当当商品价格》:

  将代表整个分页区域的DOM节点映射到这条线索上,相当于指定了一个网页区域,分页超链接可以定位到该区域。我们使用标记线索类型来定位翻页线索,“下一页”是标记值 进行标记映射,标记值和标记节点序号会自动填写到线索编辑器工作台中来设置内联线索类型。该类型主要用于翻页和抓取。选择此类型后,当前主题名称将自动填写到目标主题名称输入框中。

  4 设置AJAX获取模式

  

  ͼ5

  如图5,选择MetaStudio的菜单“Configuration”->“Aggressive Mode”设置AJAX捕获模式。

  在《分页与抓取优秀亚马逊》一文中,我们同时设置了“激进模式”和“扩展模式”,两种模式并没有绑定在一起。这个目标网站不会在每次翻页时加载另一个网页,而是对网页内容进行部分修改,所以设置“扩展模式”是没有意义的。

  5只抓取最新消息

  通常我们会定期(例如一天)抓取新闻列表,如果发现新新闻,我们会抓取它的 URL 并创建下一级线索以抓取最新的新闻内容。如果发现新闻列表中的所有新闻都是之前爬过的新闻,停止翻页和爬取。这需要一个周期性的自动爬取方法。需要编辑周期性取指调度指令文件。此文件必须命名为 crontab.xml 并存储在 $HOME/.datascraper 目录中。目录结构的详细说明请参考《抓取当当商品价格》。下面是 crontab.xml 文件的内容:

  

true

5

3600

false

demo_cnbeta_list

demo_cnbeta_list

false

80

-1

-1

false

true

23

1800

false

demo_cnbeta_detail

false

80

-1

-1

false

  所有参数的含义在《周期性爬取调度指令文件》中有说明,而“只抓取最新消息”与抓取主题demo_cnbeta_list的dupRatio参数有关,80表示80%,也就是说如果页面是爬取时发现连续三个页面爬取的URL地址有80%之前已经被爬取过,则终止翻页爬取。

  注1:当前版本的MetaSeeker只能判断抓取到的下一级线索的重复率,不能判断抓取数据的重复率。

  注意2:请不要直接使用上面的crontab.xml,因为MetaSeeker服务器上还没有定义信息结构demo_cnbeta_detail,会导致周期性爬取失败。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线