网站首页 > 开源技术 正文
Webmagic介绍和快速上手见文章《爬虫神器,WebMagic是也!》、《爬虫神器,WebMagic快速上手》。
在webmagic中主要使用Jsoup和Xsoup来对网页内容进行解析。
1、Jsoup和Xsoup
WebMagic的抽取主要用到了Jsoup和我自己开发的工具Xsoup。
1.1 Jsoup
Jsoup是一个简单的HTML解析器,同时它支持使用CSS选择器的方式查找元素。为了开发WebMagic,我对Jsoup的源码进行过详细的分析,具体文章参见Jsoup学习笔记。
1.2 Xsoup
Xsoup是我基于Jsoup开发的一款XPath解析器。
之前WebMagic使用的解析器是HtmlCleaner,使用过程存在一些问题。主要问题是XPath出错定位不准确,并且其不太合理的代码结构,也难以进行定制。最终我自己实现了Xsoup,使得更加符合爬虫开发的需要。令人欣喜的是,经过测试,Xsoup的性能比HtmlCleaner要快一倍以上。
Xsoup发展到现在,已经支持爬虫常用的语法,以下是一些已支持的语法对照表:
Name | Expression | Support |
nodename | nodename | yes |
immediate parent | / | yes |
parent | // | yes |
attribute | [@key=value] | yes |
nth child | tag[n] | yes |
attribute | /@key | yes |
wildcard in tagname | /* | yes |
wildcard in attribute | /[@*] | yes |
function | function() | part |
or | a | b | yes since 0.2.0 |
parent in path | . or .. | no |
predicates | price>35 | no |
predicates logic | @class=a or @class=b | yes since 0.2.0 |
另外我自己定义了几个对于爬虫来说,很方便的XPath函数。但是请注意,这些函数式标准XPath没有的。
Expression | Description | XPath1.0 |
text(n) | 第n个直接文本子节点,为0表示所有 | text() only |
allText() | 所有的直接和间接文本子节点 | not support |
tidyText() | 所有的直接和间接文本子节点,并将一些标签替换为换行,使纯文本显示更整洁 | not support |
html() | 内部html,不包括标签的html本身 | not support |
outerHtml() | 内部html,包括标签的html本身 | not support |
regex(@attr,expr,group) | 这里@attr和group均可选,默认是group0 | not support |
1.3 Saxon
Saxon是一个强大的XPath解析器,支持XPath 2.0语法。webmagic-saxon是对Saxon尝试性的一个整合,但是目前看来,XPath 2.0的高级语法,似乎在爬虫开发中使用者并不多。
猜你喜欢
- 2024-09-28 Android 开发者应该知道的 Kotlin 技巧 | Gitee 项目推荐
- 2024-09-28 java技术栈-服务四层技术(java技术架构图)
- 2024-09-22 程序员高效率实用工具推荐(web开发+爬虫+数据库+……)
- 2024-09-22 web开发之-PHP面向对象(9)(php面向对象和面向过程)
- 2024-09-22 大数据开源舆情分析系统-数据采集技术架构浅析
- 2024-09-22 除了Android开发Kotlin 还能做什么?六款优质Kotlin项目分享
- 2024-09-22 我所理解的爬虫(对于爬虫的理解)
- 2024-09-22 爬虫神器,WebMagic如何监控?(python爬虫监控)
- 2024-09-22 爬虫神器,Webmagic快速上手如此简单
- 2024-09-22 爬虫神器,WebMagic组件的使用和定制
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)