文档章节

webmagic0.6.0抓取aliyun博客

Mr_Damen
 Mr_Damen
发布于 2017/02/15 16:30
字数 386
阅读 113
收藏 1
点赞 0
评论 0

抓取网站:https://yq.aliyun.com/articles

lib包:https://github.com/code4craft/webmagic/releases/download/WebMagic-0.6.0/webmagic-0.6.0-all.tar.gz

代码

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<String> 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();
	}
 }

结果

© 著作权归作者所有

共有 人打赏支持
Mr_Damen
粉丝 4
博文 36
码字总数 6809
作品 0
无锡
程序员
Linux的curl命令参数详解

Linux运维常用软件 Curl是Linux下一个很强大的http命令行工具,其功能十分强大。linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,...

成越 ⋅ 2016/08/08 ⋅ 0

docker(19):压缩docker python 镜像大小,减少依赖

1,关于python镜像 使用python开发的时候遇到问题。 发现构建之后 镜像还是比较大的。想办法减少点文件啥的。 能让镜像小点,这样发布部署啥的都方便。 2,构建dockerfile python3 在构建pan...

freewebsys ⋅ 04/16 ⋅ 0

.Net 安装aliyun-oss

NuGet安装 如果您的Visual Studio没有安装NuGet,请先安装 NuGet。 安装好NuGet后,先在Visual Studio中新建或者打开已有的项目,然后选择工具 > NuGet程序包管理器 > 管理解决方案的NuGet程...

桃子红了呐 ⋅ 01/07 ⋅ 0

Greenplum相关资源

中文社区/博客: 阿里云官网-Greenplum圈:http://yq.aliyun.com/groups/13 阿里云官网-PostgreSQL圈:http://yq.aliyun.com/groups/29 德哥博客:http://blog.163.com/digoal@126/ http://......

rathan0 ⋅ 2016/01/13 ⋅ 0

将Centos的yum源为国内的阿里云源

阿里云国内镜像:http://mirrors.aliyun.com/repo/ 第一步:备份你的原镜像文件,以免出错后可以恢复。 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 第...

技术小大人 ⋅ 2017/11/16 ⋅ 0

云栖神侠传—阿里云数据库专家德歌告诉你PostgreSQL的那些事

什么是云栖神侠传: 云栖社区(http://yq.aliyun.com/?utmsource=yqdg),是阿里云面向开发者群体的开放型社区。在云栖社区中,活跃着许多阿里技术大牛,他们在自己的技术领域都是佼佼者,具...

阿里云官方博客 ⋅ 2016/04/11 ⋅ 0

使用aliyun镜像源下载镜像及仓库搭建

阿里云Docker镜像库 阿里云容器Hub服务:http://dev.aliyun.com/search.html 来自云端的容器Hub服务 高性能的本地Registry,提供上传、下载、构建及托管的全方位镜像服务。 并且为用户提供加...

技术小阿哥 ⋅ 2017/11/27 ⋅ 0

阿里云开源编程马拉松入围项目

在9月8号启动的 阿里云开源编程马拉松 至今已经吸引了100多个团队参赛。经过评委的初步筛选现有14个参赛项目入选。入选的项目团队/个人 将会在10月14日云栖大会现场进行路演,在大会现场颁奖...

oschina ⋅ 2015/10/09 ⋅ 17

maven国内镜像---阿里云

准备搭个Java web的测试项目,用maven做包管理。貌似从用了lantern(翻墙软件),好像chrome打开网页都慢了很多(迅雷下载能达到10M)下maven也是搞笑,下了个源码包,打开看着一堆package,...

graz春江 ⋅ 2016/11/13 ⋅ 0

2016阿里安全峰会重点资料下载

2016阿里安全峰会重点资料下载 风声与暗算,无中又生有:威胁情报应用的那些事儿 内容整理:https://yq.aliyun.com/articles/57700 PDF下载: · Webshell安全分析实践谈-陈中祥 · 安全威胁...

zting科技 ⋅ 2017/01/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

金山WPS发布了Linux WPS Office

导读 近日,金山WPS发布了Linux WPS Office中文社区版新版本,支持大部分主流Linux系统,功能更加完善,兼容性、稳定性大幅度提升。本次更新WPS将首次在Linux提供专业办公文件云存储服务,实...

问题终结者 ⋅ 昨天 ⋅ 0

springboot2输出metrics到influxdb

序 本文主要研究一下如何将springboot2的metrics输出到influxdb maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo......

go4it ⋅ 昨天 ⋅ 0

微信小程序 - 选择图片显示操作菜单

之前我分享过选择图片这个文章,但是我在实际开发测试使用中发现一个问题在使用 wx.chooseImage 选择照片显示出第一格是拍照,后面是相册里的图片。这种实现之前说过了,效果如下。 但是你从...

hello_hp ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部