

老狗啃爬虫-便捷的元素定位之Selectable
source link: http://www.veiking.cn/blog/1048-page.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

老狗啃爬虫-便捷的元素定位之Selectable
无论是Jsoup还是Xsoup,都是为了实现HTML页面文件的解析和数据定位,还有正则表达式,根据这些技术原理,WebMagic进一步集成浓缩,将这些我们在爬虫开发过程中使用频率很高的功能,抽提出一个叫Selectable的接口。Selectable可以使我们在操作中简单快捷的完成页面元素的提取,不去关心具体操作细节,而把更多的精力用在爬虫业务的实现上
书接上文,我们捋过,无论是Jsoup还是Xsoup,都是为了实现HTML页面文件的解析和数据定位,还有正则表达式,根据这些技术原理,WebMagic进一步浓缩提炼,将这些我们在爬虫开发过程中使用频率很高的功能,抽提出一个叫Selectable的接口。
Selectable可以使我们在操作中简单快捷的完成页面元素的提取,不去关心具体操作细节,而把更多的精力用在爬虫业务的实现上。
在回顾下我们之前写的那个测试爬虫,代码里我们是通过page.getHtml()获取到一个Html对象,这个对象是实现了Selectable接口的,于是乎,Jsoup、Xsoup等等这些功能,我们都可以直接使用了,接下来我们看看这个Selectable,主要都有些什么方法。
Selectable之提取元素(数据定位)
下面的这几个方法,主要功能的用于数据元素的提取定位操作,这部分API返回的其实是一个实现了Selectable接口的对象,我们来看看:
方法 说明 示例
xpath(String xpath) 使用XPath选择 html.xpath(“//div[@class=’title’]”)
$(String selector) 使用Css选择器选择 html.$(“div.title”)
$(String selector,String attr) 使用Css选择器选择 html.$(“div.title”,”text”)
css(String selector) 功能同$(),使用Css选择器选择 html.css(“div.title”)
links() 选择所有链接 html.links()
regex(String regex) 使用正则表达式抽取 html.regex(“(.*?)\”)
regex(String regex,int group) 使用正则表达式抽取,并指定捕获组 html.regex(“(.*?)\”,1)
replace(String regex, String replacement) 替换内容 html.replace(“\”,””)
根据上面这些方法,无论是抓举数据还是提取链接,我们都可以避免在页面穷尽的遍历,方便快捷的将抓取目标精准的定位到具体的元素上,将更多的精力配置在抓取的具体业务逻辑上。
Selectable之数据值获取
一般说执行完上边的提取定位操作,我们就可以拿到元素值,Selectable接口的以下方法,即可以满足这个功能。
方法 说明 示例
get() 返回一条String类型的结果 String link= html.links().get()
toString() 功能同get(),返回一条String类型的结果 String link= html.links().toString()
all() 返回所有抽取结果 List links= html.links().all()
match() 是否有匹配结果 if (html.links().match()){ xxx; }
根据这些方法的特点,我们可以发现,如果是单个元素,只有一个结果,我们就可以用.get()方法或.toString(),获取这个元素值;如果是多个元素取值,我们就用.all()方法,即可得到一个链表集合。有时候得到这个元素值并不是最终目的,在爬虫运算的逻辑里,经常会有URL链接对比校验的工作,这里也直接给抽出了一个match()方法,非常方便。
看完这些接口的方法,我们在回顾之前讲的Jsoup、Xsoup等等,思路应该会非常明晰了,对,知道这些基础,WebMagic框架的使用,爬虫程序的开发肯定会更加得心应手。
回头再看看之前的代码:
String title = page.getHtml().xpath("//*[@id=\"content\"]/div/div[1]/div[2]/div[1]/h1/a/text()").get();
是不是感觉通过这样的方式得到title值,非常度便捷高效。
当然,其实Selectable接口还有很多方法,我们只是列举了一些比较典常用的,其他功能,以后在开发学习的过程中,我们再慢慢发掘。
Recommend
-
11
Android ListView with Button is not selectable (Clickable) advertisements I am facing a strange problem, I have added a Custom row in my ListV...
-
7
在爬虫框架WebMagic中,用于保存结果的组件叫做Pipeline。在WebMagic已经实现了的Pipeline接口中,如果我们仅仅是想把抓取数据进行控制台输出,我们可以借助它的ConsolePipeline;如果我们想将数据以文件的形式进行存储,即可借助它的...
-
17
之前讲了很多关于webmagic的爬虫实现方法,都是基于静态网页的,我们只需考虑根据链接下载页面,然后解析html提取目标数据即可。然而,很多网站的页面数据是动态的,那么简单的下载解析将毫无意义,这时候我们就得借助额外的技术方案...
-
9
老狗啃爬虫-爬虫学习总结(示例源码)_老狗啃骨头_Veiking百草园-知识点滴,日常分享 爬虫技术也不是局限于某种编程语言的应用技术,语种上没有优劣之分,有时候我们遇到问题,除了参考网上的案例,去读源码,...
-
8
网络爬虫是一个比较成熟的技术应用,目前,从技术角度说,市面上的爬虫框架有很多种选择,不同种开发语言又有许多不同的种类,这就让不少人在开发预研的时候陷入选择上的迷茫,接下来我们收集了一下市面上主流的开发语言中对一...
-
6
老狗啃爬虫-开发准备之Maven动员_老狗啃骨头_Veiking百草园-知识点滴,日常分享 本次关于爬虫框架WebMagic的开发学习,将基于java语言的Spring框架,Spring框架是java语言诸多优秀框架里脱颖而出的一个功能完...
-
10
WebMagic是一个简单灵活的Java爬虫框架。其简单的API,容易上手,模块化的结构,便于轻松扩展;同时也功能完备,且提供多线程和分布式支持。基于WebMagic,我们可以快速开发出一个高效、易维护的爬虫。WebMagic框架主要由Downloader、...
-
4
爬虫爬取内容,本质就是把网站页面下载、读取过来,然后其核心工作就是解析定位,提取数据。这里说的Jsoup、Xsoup、CSS选择器、Xpath、JsonPath,包括正则表达式的应用,都是数据处理过程中必不可少的基础性技术。我们使用的爬虫框架W...
-
5
老狗啃爬虫-Cookies的使用之Selenium 老狗啃骨头 @Veik...
-
4
老狗啃爬虫-URL去重之Scheduler_老狗啃骨头_Veiking百草园-知识点滴,日常分享 读过源代码,再回顾我们之前所学所述,WebMagic的工作机制,以及之后我们如何设计具体的爬虫程序,思路会更加明了清晰。我们知道...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK