关于WebMagic
WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。
特性:
简单的API,可快速上手
模块化的结构,可轻松扩展
提供多线程和分布式支持
官网:http://webmagic.io/
中文: http://webmagic.io/docs/zh/
English: http://webmagic.io/docs/en
Javadocs: http://webmagic.io/apidocs/
WebMagic由四个组件(PageProcessor、Pipeline、Downloader、Scheduler)构成
PageProcessor
PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。
Pipeline
Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等.。
Downloader
Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了Apache HttpClient作为下载工具。
Scheduler
Scheduler负责管理待抓取的URL,以及一些去重的工作。WebMagic默认提供了JDK的内存队列来管理URL,并用集合来进行去重。也支持使用Redis进行分布式管理。
项目结构
项目结构
代码实现
Maven依赖
us.codecraft
webmagic-core
0.7.2
us.codecraft
webmagic-extension
0.7.2
配置数据库
配置数据库
具体代码
@Component
public class NetEaseMusicPageProcessor implements PageProcessor {
// 正则表达式\\. \\转义java中的\ \.转义正则中的.
// 主域名
public static final String BASE_URL = "http://music.163.com/";
// 匹配专辑URL
public static final String ALBUM_URL = "http://music\\.163\\.com/playlist\\?id=\\d+";
// 匹配歌曲URL
public static final String MUSIC_URL = "http://music\\.163\\.com/song\\?id=\\d+";
// 初始地址, 褐言喜欢的音乐id 148174530
public static final String START_URL = "http://music.163.com/playlist?id=148174530";
public static final int ONE_PAGE = 20;
private Site site = Site.me()
.setDomain("http://music.163.com")
.setSleepTime(1000)
.setRetryTimes(30)
.setCharset("utf-8")
.setTimeOut(30000)
.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");
@Override
public Site getSite() {
return site;
}
@Autowired
MusicService mMusicService;
@Override
public void pr