webmagic的使用json抓取网页
时间: 2024-03-30 13:29:27 浏览: 22
WebMagic 是一个基于 Java 的简单灵活的爬虫框架,支持多线程抓取,支持分布式抓取,支持自定义扩展。WebMagic 的使用非常灵活,可以通过编写 Java 代码来实现各种网站的爬取。下面是一个使用 WebMagic 抓取网页并将结果以 JSON 格式输出的例子:
```java
import us.codecraft.webmagic.*;
import us.codecraft.webmagic.pipeline.JsonFilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Selectable;
public class MyPageProcessor implements PageProcessor {
private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);
@Override
public void process(Page page) {
Selectable title = page.getHtml().xpath("//title/text()");
Selectable content = page.getHtml().xpath("//div[@class='content']/text()");
page.putField("title", title.get());
page.putField("content", content.get());
}
@Override
public Site getSite() {
return site;
}
public static void main(String[] args) {
Spider.create(new MyPageProcessor())
.addUrl("http://www.example.com")
.addPipeline(new JsonFilePipeline("D:\\webmagic\\"))
.run();
}
}
```
在这个例子中,我们定义了一个 `MyPageProcessor` 类,实现了 `PageProcessor` 接口,重写了 `process` 方法和 `getSite` 方法。在 `process` 方法中,我们使用了 WebMagic 提供的 `Selectable` 类来选择需要抓取的内容,并将结果保存到 `Page` 对象中。在 `getSite` 方法中,我们设置了一些爬虫的配置信息,例如重试次数和抓取间隔时间。在 `main` 方法中,我们创建了一个 `Spider` 对象,指定了需要抓取的网址和输出结果的格式,然后运行爬虫。