[doc] ch3 part1

pull/84/head
yihua.huang 11 years ago
parent 7ca644cdd9
commit 9a0a4051ed

@ -5,7 +5,7 @@ WebMagic是一个简单灵活、便于二次开发的爬虫框架。除了可以
你可以直接使用WebMagic进行爬虫开发也可以定制WebMagic以适应复杂项目的需要。
## 1. 使用WebMagic
## 1. 在项目中使用WebMagic
WebMagic主要包含两个jar包`webmagic-core-{version}.jar`和`webmagic-extension-{version}.jar`。在项目中添加这两个包的依赖即可使用WebMagic。
@ -88,6 +88,8 @@ public class GithubRepoPageProcessor implements PageProcessor {
![runlog](http://static.oschina.net/uploads/space/2014/0403/103741_3Gf5_190591.png)
<div style="page-break-after:always"></div>
## 2.下载和编译源码
WebMagic是一个纯Java项目如果你熟悉Maven那么下载并编译源码是非常简单的。如果不熟悉Maven也没关系这部分会介绍如何在Eclipse里导入这个项目。
@ -158,11 +160,58 @@ Intellij Idea默认自带Maven支持import项目时选择Maven项目即可。
## 3. 基本的爬虫
### 3.1 抽取内容(xpath, regex, css selector, jsonpath)
## 3. 基本的爬虫
### 3.1 实现PageProcessor
在WebMagic里实现一个基本的爬虫只需要编写一个类实现`PageProcessor`接口。这个类包含了抓取一个网站所需要的所有定制化信息。以之前的`GithubRepoPageProcessor`为例:
```java
public class GithubRepoPageProcessor implements PageProcessor {
// 抓取网站的相关配置,包括编码、抓取间隔、重试次数等
private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);
@Override
// process是定制爬虫逻辑的核心接口在这里编写抽取逻辑
public void process(Page page) {
// 以下部分定义了如何抽取页面信息,并保存下来
page.putField("author", page.getUrl().regex("https://github\\.com/(\\w+)/.*").toString());
page.putField("name", page.getHtml().xpath("//h1[@class='entry-title public']/strong/a/text()").toString());
if (page.getResultItems().get("name") == null) {
//skip this page
page.setSkip(true);
}
page.putField("readme", page.getHtml().xpath("//div[@id='readme']/tidyText()"));
// 这一步从页面发现后续的url地址来抓取
page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/\\w+/\\w+)").all());
}
@Override
public Site getSite() {
return site;
}
public static void main(String[] args) {
Spider.create(new GithubRepoPageProcessor())
//从"https://github.com/code4craft"开始抓
.addUrl("https://github.com/code4craft")
//开启5个线程抓取
.thread(5)
//启动爬虫
.run();
}
}
```
### 3.2 抽取内容(xpath, regex, css selector, jsonpath)
### 3.2 发现链接
### 3.3 发现链接
### 3.3 处理多个页面
### 3.4 处理多个页面
## 4. 使用注解

Loading…
Cancel
Save