webmagic根据xpath解析页面
来源:互联网 发布:手机解锁软件 编辑:程序博客网 时间:2024/06/01 07:54
昨天做页面的时候,有一个需求,大概要实现的功能就是用户输入一个网址url和一个xpath路径,根据这个xpath去用户给的url里解析,最后呈现出解析的结果,以达到用户判断自己写的xpath是否正确。
之前百度了一个网上的一种用htmlclean来解析的,我试了一下,效果还不错,也比较简单,毕竟人家是专门用来做解析的嘛。后面因为项目里用的爬虫框架是webmagic,想的是最好不要引用别的框架了,于是就用了webmagic来做了。
首先webmagic用来做html解析真的是太可惜了,号称是要做国产第一爬虫框架的webmagic,它的功能有多强大大家自行百度。
其实webmagic上手很简单,只需要写一个类来实现webmagic的PageProcessor接口,然后就可以用了。
import us.codecraft.webmagic.Page;import us.codecraft.webmagic.Site;import us.codecraft.webmagic.processor.PageProcessor;public class WebMagic implements PageProcessor { private Site site; private String xpath; private Page page; public void setPage(Page page){ this.page = page; } public Page getPage(){ return this.page; } public void setXpath(String xpath){ this.xpath = xpath; } public String getXpath(){ return this.xpath; } //这个方法的Page参数就是解析之后的内容 @Override public void process(Page page) { page.putField("content", page.getHtml().xpath(this.xpath).all()); this.page = page; }}
然后在别的方法里面来启动webmagic
WebMagic webMagic = new WebMagic();webMagic.setSite(Site.me().setSleepTime(1000));//process方法需要用到xpath,所以要先初始化xpathwebMagic.setXpath(xpath);MemoryPipeline pipeline = new MemoryPipeline();Spider.create(webMagic) .addUrl(url) .addPipeline(pipeline) .run();
这里本来我们可以直接通过
Spider.create(webMagic) .addUrl(url) .run();
这句来启动webmagic然后用我写的webmagic.getPage()方法来获取解析结果的,但是为了方便返回前台,又加了一个类MemoryPipeline来截取解析的结果
import java.util.Map;import us.codecraft.webmagic.ResultItems;import us.codecraft.webmagic.Task;import us.codecraft.webmagic.pipeline.Pipeline;public class MemoryPipeline implements Pipeline{ private Map<String, Object> dataMap; @Override public void process(ResultItems resultItems, Task arg1) { dataMap = resultItems.getAll(); } public Map<String, Object> getDataMap() { return dataMap; } public void setDataMap(Map<String, Object> dataMap) { this.dataMap = dataMap; }}
最后通过一句
Map<String, Object> dataMap = pipeline.getDataMap();
来得到一个hashmap返回到前台去,再在前台遍历一下就可以了
拿百度测试一下,获取百度的title
成功!
呕心沥血写出来的,转载请一定注明出处!
2 0
- webmagic根据xpath解析页面
- webmagic json 解析 UnsupportedOperationException
- 通过WebMagic认识正则表达式和XPATH
- XPath解析
- Xpath解析
- xpath解析
- webmagic
- WebMagic
- webmagic
- Selenium中CSS选择器与Xpath根据页面结构定位元素比较
- WebMagic抓取前端Ajax渲染的页面
- webmagic采集CSDN的Java_WebDevelop页面
- WebMagic(一)--抓取一个简单的页面
- WebMagic抓取前端Ajax渲染的页面
- WebMagic(一)--抓取一个简单的页面
- Js根据xpath获取元素
- xpath解析HTML
- DOM4J+XPath 解析XML
- Spring Web MVC学习笔记:原理简介与环境搭建
- jQuery插件扩展
- dequeueReusableSupplementaryViewOfKind:kind ... 的返回类型一直是UICollectionReusableView
- 矩阵论笔记(三)——欧氏空间与正交变换
- Xcode Run或者Archive报错,但是不显示buildFailed原因的解决方案
- webmagic根据xpath解析页面
- LogUtil
- 加密算法之C#兼容PHP中sha1加密
- Android开发录音和播放音频的步骤(动态获取权限)
- Codeforces Round #404(Div. 2)C. Anton and Fairy Tale【二分】
- NavigationView原生侧滑菜单
- IOS Swift3 使用 CLLocationManager 定位
- 第一周测验:网络爬虫之规则
- 异步通信在综保装置管理上的应用