自动抓取网页数据(取值XML步骤解析(一)_官方网站_光明网)

优采云 发布时间: 2022-02-24 05:21

  自动抓取网页数据(取值XML步骤解析(一)_官方网站_光明网)

  ]]>

  XML 规则:

  1.必须定义处理器元素,至少收录一个过程元素。

  2.processer元素收录了所有的process元素,process元素定义了页面代码的整个处理流程

  程序。

  3.process 元素包括 3 个属性,流、表和字段。流代表一个过程。也就是说,在这个过程元素之后

  解析出来的内容就是下一步的内容或者回退到未解析内容的内容。值为真时,将本步处理结果作为下一步处理的物料,本步处理结果不存入数据库。当值为false时,本步骤的结果只在本步骤中使用。下一次解析回退到这一步解析前的内容。table属性定义了该步骤的处理结果要存储在哪个数据库表中,fidld属性定义了对应表中的字段。

  4.每个进程都必须收录一个处理流。目前有3种处理流程,tag-filter,regex-filter,

  标志过滤器。

  5.tag-filter 指标签过滤,获取指定标签的内容。tag-filter 包括 4 个属性,pos、key、value、

  纯文本。pos 指的是 html 标签的位置。如果未指定,则默认为第一个。key是指要获取的标签的属性,包括name、id、class等。当然其他属性如width、href、target等也是支持的,所有标准的html属性都支持。value 指的是这个属性的值。textonly 是指是否只获取该标签内的文本内容。没有标签。

  6.regex-filter 指正则过滤,获取符合正则表达式的内容。注意正则表达式必须放在

  在 CDATA 块内。另外,要获取的内容必须用()括起来,只会获取()内的内容。

  7.flag-filter是指flag过滤,获取两个flag之间的内容。用户必须自己确保开始和结束

  标志位是唯一的。这可以确保您得到您想要的。获取标志位需要用户查看源代码,获取唯一标志位。标记过滤是目前主流爬虫提供的最常用的方法。

  解析过程:

  1.先获取所有处理流

  2. 进程按顺序执行。确定流程流程的类型流属性,根据流属性调用不同的处理

  方法。为真时剪切,为假时解析保存。

  3. 根据流属性进入形式分析,确定分析元素过滤器的类型,是target-filter,还是

  regex-filter 或 flag-filter,根据不同的解析类型调用不同的解析过程。解析过程参考

  XML 规则。

  4.所有进程执行完毕后,系统会将采集到的所有字段保存到数据库中。

  案子

  爬取 javaeye 博客内容

  此示例演示如何抓取 javaeye 上博客的 文章。博客地址/。在爬取之前,我们需要创建数据库和表,只需导入示例使用的数据库表即可。

  第 1 步:目标定义

  先分析页面上文章的链接的写法

  HashMap 与 Hashtable 和 HashSet 的区别

  IE下ZOOM属性导致的渲染问题

  Web2.0网站性能调优实践

  通过这些链接的共同点,我们可以很容易地找到其文章链接的规律性,并绘制出这样的正则表达式:

  href\=\'(/blog/\d*)\'

  注意我们要获取的只是一个类似/blog/179642的链接,而不是像href=这样的东西,所以我们在正则中匹配/blog/179642的部分加上(),系统会自动获取this() 中的内容。请注意, () 是必需的。

  完整的 XML 文件编写请参考 WEB-INF/example.xml。

  第 2 步:剪切

  首先去掉网页的多余部分,我们把头部剪掉。具体的写法可以参考xml文件。

  第 3 步:处理

  在处理网页之前,我们需要详细分析网页的结构。以 /blog/179642文章 为例。

  分析过程如下:

  ●我们想要的内容在一个id为main的div中。让我们先剪一下,

  要被剪掉。我们定义了一个流程为真的流程,它将返回修剪后的内容。

  ● 然后我们抓取页面头部的标题作为我们保存到数据库的标题。由于复杂,我们使用

  使用正则表达式获取

  ]]>

  我们要获取的部分只是文本,不需要html标签。所以,将匹配文本内容的部分

  我们把它放在()里面。请注意, ( ) 是必需的。

  ● 接下来,获取它的关键字作为文章 的标签,我们同样使用正则来完成。

  :(.*?)

  ]]>

  ●最后得到文章的内容。这里我们使用一种更简单的方法,标志位方法。我们发送

  文章 的所有正文内容现在都是

  和

  这两个字符串之间。而且这2个字符串是唯一的,不会重复。在这种情况下,使用

  chi-bit 方法是最好和最简单的。请记住:如果您想在 2 个唯一字符内抓取内容

  在字符串的中间,那么使用标志方法是最好和最简单的方法。

  第 4 步:抓住

  只需使用要作为参数执行的 xml 文件名执行 SystemCore,任务就会启动。可以同时观察数据库和控制台,观察爬取的进度。

  相关话题

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线