博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webmagic0.6.0抓取aliyun博客
阅读量:6293 次
发布时间:2019-06-22

本文共 3140 字,大约阅读时间需要 10 分钟。

hot3.png

抓取网站:

lib包:

代码

import java.util.List;import us.codecraft.webmagic.Page;import us.codecraft.webmagic.Site;import us.codecraft.webmagic.Spider;import us.codecraft.webmagic.pipeline.JsonFilePipeline;import us.codecraft.webmagic.processor.PageProcessor;import us.codecraft.webmagic.selector.Selectable;public class CrawlAliyun  implements PageProcessor{ 		//入口	public static final String URL_START ="https://yq.aliyun.com/articles/type_all";	//分页    public static final String URL_PAGE = "https://yq.aliyun.com/articles/type_all-order_createtime-page_[0-9]+";    //标签    public static final String URL_TAGS = "https://yq.aliyun.com/tags/type_blog-tagid_[0-9]+";    //博文    public static final String URL_CONTENT = "https://yq.aliyun.com/articles/[0-9]+";		// 部分一:抓取网站的相关配置,包括编码、抓取间隔、重试次数等    private Site site = Site.me().setRetryTimes(3).setSleepTime(1000).setCharset("utf-8");    @Override    // process是定制爬虫逻辑的核心接口,在这里编写抽取逻辑    public void process(Page page) {        // 部分二:定义如何抽取页面信息,并保存下来    	Selectable select=null;    	List
urls=null; if (page.getUrl().regex(URL_PAGE).match()||page.getUrl().regex(URL_START).match()) { System.out.println("=====pageurl====="+page.getUrl()); select = page.getHtml().xpath("//section[@class='yq-new-list yq-n-l-blog']"); urls = select.links().regex(URL_PAGE).all(); page.addTargetRequests(urls); urls = select.links().regex(URL_CONTENT).all(); page.addTargetRequests(urls); } if (page.getUrl().regex(URL_CONTENT).match()) { System.out.println("=====arturl====="+page.getUrl()); select = page.getHtml().xpath("//p[@class='blog-tags']"); urls = select.links().regex(URL_TAGS).all(); page.addTargetRequests(urls); page.putField("url", page.getUrl().toString()); page.putField("title", page.getHtml().xpath("//h2[@class='blog-title']/text()").toString() ); page.putField("author", page.getHtml().xpath("//a[@class='b-author']/text()").toString()); page.putField("authorUrl", page.getHtml().xpath("//a[@class='b-author']").$("a","href").toString()); page.putField("createtime", page.getHtml().xpath("//span[@class='b-time']/text()").toString()); page.putField("watched", page.getHtml().xpath("//span[@class='b-watch']/text()").toString().replace("浏览", "")); page.putField("tags",page.getHtml().xpath("//p[@class='blog-tags']/a/text()").all() ); page.putField("summary", page.getHtml().xpath("//p[@class='blog-summary']/text()").toString()); page.putField("content", page.getHtml().xpath("//div[@class='content-detail']/html()").toString()); } } @Override public Site getSite() { site.setUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31"); return site; } public static void main(String args[]) { Spider.create(new CrawlAliyun()) //从"https://github.com/code4craft"开始抓 .addUrl(URL_START) .addPipeline(new JsonFilePipeline("F:\\webmagic\\")) //开启5个线程抓取 .thread(5) //启动爬虫 .run(); } }

结果

转载于:https://my.oschina.net/DemonCry/blog/839316

你可能感兴趣的文章
类对象定义 二
查看>>
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>