虚拟机JAVA爬虫出错

代码


package my.webmagic;



import us.codecraft.webmagic.Page;

import us.codecraft.webmagic.Request;

import us.codecraft.webmagic.Site;

import us.codecraft.webmagic.Spider;

import us.codecraft.webmagic.pipeline.ConsolePipeline;

import us.codecraft.webmagic.pipeline.JsonFilePipeline;

import us.codecraft.webmagic.processor.PageProcessor;

import us.codecraft.webmagic.scheduler.QueueScheduler;



public class GetComments implements PageProcessor {

// 对爬取站点的一些属性进行设置,例如:设置域名,设置代理等;

private Site site = Site.me().setDomain("10.0.47.153:32400").setSleepTime(2000);



public Site getSite() {

return site;

}



public void process(Page page) {

page.putField("ten", page.getJson().toString());

}



public static void main(String[] args) {

String url_init    = "http://10.0.47.153:32400/jdjson?callback=fetchJSON_comment98vv111&productId=39215375204&score=0&sortType=5&pageSize=10&isShadowSku=0&fold=1&page=1";

                String url_pattern = "http://10.0.47.153:32400/jdjson?callback=fetchJSON_comment98vv111&productId=39215375204&score=0&sortType=5&pageSize=10&isShadowSku=0&fold=1&page=";

String output = "/data/edu1/tmp/";



QueueScheduler scheduler = new QueueScheduler();



Spider spider = Spider.create(new GetComments()).addUrl(url_init)

.setScheduler(scheduler)

.addPipeline(new JsonFilePipeline(output))

.addPipeline(new ConsolePipeline());



for (int i = 0; i < 100; i++) {

Request request = new Request();

request.setUrl(url_pattern + i);

scheduler.push(request, spider);

}

spider.thread(5).run();

}

}

运行截图

img

这应该是缺少log4j配置文件的警告信息,加一个log4j配置文件试试

该回答借鉴GPT
这段代码中可能有以下问题:

Site.me()方法中应该传入的是网站的域名,而不是 IP 地址和端口号。可以改为 Site.me().setDomain("10.0.47.153")。

调用 page.getJson().toString() 方法前,应该先判断 page.getJson() 是否为 null。

QueueScheduler 在新版的 WebMagic 中已经被废弃,可以使用 FileCacheQueueScheduler 或 RedisScheduler。

这个并没有看到错误,只是警告信息并且只和日志有关,并不影响主业务流程