用webmagic写一个简单的网络爬虫
用webmagic写一个网络爬虫(不是注解)
引入的jar包:
具体代码如下:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
/**
* @author ZFH
* @version 创建时间:2018年11月26日 下午2:47:08
*/
/**
* @author ZFH
* @version 创建时间:2018年11月17日 下午4:17:55
*/
public class WebmagicUtil implements PageProcessor{
//https://blog.****.net/zzzffhh/article/details/83111087
/**
* 爬取的列表页,页数。
*/
/**
* 部分一:抓取网站的相关配置,包括编码、抓取间隔、重试次数等
*/
private Site site = Site.me().setSleepTime(1000).setRetryTimes(3);
/**
* 爬取
*/
public void process(Page page) {
//列表
if(!(page.getUrl().regex("https://www.farpop.com/0_4/\\w+").match())) {
// int i=10;
// while(page.getHtml().xpath("//div[@id=\"list\"]/dl/dd["+i+"]/a").links().toString()!=null) {
// String url = page.getHtml().xpath("//div[@id=\"list\"]/dl/dd["+i+"]/a").links().toString();
// System.out.println("----"+url);
// page.addTargetRequest(url);
// i++;
// }
//和上面的等价
List<String> list = page.getHtml().xpath("//div[@id=\"list\"]/dl/dd").links().all();
page.addTargetRequests(list);
}//详情页
else {
// String url = page.getHtml().xpath("//div[@class=\"bottem1\"]/a[3]").links().toString();
// System.out.println(url);
// page.addTargetRequest(url);
String string = page.getHtml().xpath("//div[@class=\"bookname\"]/h1/text()").toString();
String string1 = page.getHtml().xpath("//div[@id=\"content\"]/text()").toString();
System.out.println(string);
// System.out.println(string1);
String fileStr = "E:\\456.txt";
File file = new File(fileStr);
try {
PrintWriter output = new PrintWriter(new FileOutputStream(fileStr,true));
//题目
output.println(string);
//内容
output.println(string1);
output.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 设置属性
*/
public Site getSite() {
return site;
}
public static void main(String[] args) {
/**设置代理
* HttpClientDownloader httpClientDownloader = new HttpClientDownloader();
httpClientDownloader.setProxyProvider(SimpleProxyProvider.from(new Proxy("101.101.101.101",8888,"username","password")));
spider.setDownloader(httpClientDownloader);
*/
System.out.println("开始爬取...");
//启动爬虫
Spider.create(new WebmagicUtil())
//添加初始化的URL
.addUrl("https://www.farpop.com/0_4/")
// .addUrl("https://blog.****.net/zzzffhh/article/details/83111087")
//启动10个线程
.thread(1)
//运行
.run();
// SpiderMonitor.instance().register("");//监控爬虫
System.out.println("爬取结束");
}
}
对应的网页: