WebMagic是码云上面一个很热门的爬虫框架,非常好用便捷
地址:https://gitee.com/flashsword20/webmagic 感谢作者
爬取一个页面的时候,有些网站会通过js渲染或者通过ajax渲染,普通的无渲染就可加载出来的页面此篇文件介绍,通过js简单渲染处理的数据下篇文章,要是用户想爬取ajax渲染出来的数据,请参考WebMagic文档作者介绍的方法:http://webmagic.io/docs/zh/posts/chx-cases/js-render-page.html
正文:
1.添加这两个主要的maven
|
2.业务层
WebMagic爬虫只需要实现PageProcessor这个类就可以开始写业务
package spider;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.downloader.HttpClientDownloader;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.proxy.Proxy;
import us.codecraft.webmagic.proxy.SimpleProxyProvider;
import java.util.List;
public class TestDemo implements PageProcessor {
private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);
@Override
public void process(Page page) {
String list = page.getHtml().xpath("*/html/html()").toString();
page.putField("html",list);
List<String> links = page.getHtml().links().regex("http://my\\.oschina\\.net/flashsword/blog/\\d+").all();
page.addTargetRequests(links);
page.putField("title", page.getHtml().xpath("//div[@class='BlogEntity']/div[@class='BlogTitle']/h1").toString());
page.putField("content", page.getHtml().$("div.content").toString());
page.putField("tags",page.getHtml().xpath("//div[@class='BlogTags']/a/text()").all());
if (links.isEmpty()) {
System.out.println("s==============跳过");
page.setSkip(true);
}else {
System.out.println("s=============="+links.toString());
}
//dosomething,保存到数据库什么的
// 部分三:从页面发现后续的url地址来抓取
List<String> pageList = page.getHtml().xpath("/a/@href").all();
page.addTargetRequests(pageList);
}
@Override
public Site getSite() {
return site;
}
public static void main(String[] args) {
//设置代理
HttpClientDownloader httpClientDownloader = new HttpClientDownloader();
httpClientDownloader.setProxyProvider(SimpleProxyProvider.from(
new Proxy("244.343.322.244",5332)
,new Proxy("4245.432.421.523",3242)
));
Spider.create(new Test2())
//从"https://www.youkuaiyun.com/"开始抓
.addUrl("http://my.oschina.net/flashsword/blog")
//配置代理
/* .setDownloader(httpClientDownloader)*/
//开启5个线程抓取
.thread(5)
//启动爬虫
.run();
}
}
|
这里通过page.addTargetRequests()方法来增加要抓取的URL,并通过page.putField()来保存抽取结果。page.getHtml().xpath()则是按照某个规则对结果进行抽取,这里抽取支持链式调用。调用结束后,toString()表示转化为单个String,all()则转化为一个String列表。
本文介绍了如何使用WebMagic爬虫框架进行网页抓取。WebMagic是一个在码云上非常受欢迎的爬虫框架,提供了简单易用的API。文章讲解了添加Maven依赖、实现PageProcessor以及如何通过xpath规则抽取和处理网页数据。
343

被折叠的 条评论
为什么被折叠?



