搜搜问答
搜搜问问问题对爬取,之后存储到本地,再用jsoup做进一步的解析。
package shuju;
import java.util.List;
import javax.management.JMException;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.monitor.SpiderMonitor;
import us.codecraft.webmagic.pipeline.JsonFilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;
/**
定制爬虫的核心部分
*/
public class souwenzhengti implements PageProcessor {
private Site site = Site.me().setSleepTime(1);
public Site getSite() {
return site;
}
int temp=1;
//process(过程)
public static final String URL_LIST= "http://wenwen\\.sogou\\.com/question/\\?qid=\\d+\\&ch=ww\\.fly\\.newques";
//某学科的问题列表
public static final String URL_aiRICLE ="http://wenwen\\.sogou\\.com/cate/tag\\?tag_id=137\\&tp=\\d+\\&pno=\\d+\\&ch=ww\\.fly\\.fy\\d+\\#questionList";
public void process(Page page) {
List<String> pages = page.getHtml().xpath("[@class='btn-page-num']").links().all(); //页面数
page.addTargetrequests(pages);
if (page.getUrl().regex(URL_AIRICLE).match()) {
List<String> links = page.getHtml().xpath("[@class='sort-lst-tab']").links().regex(URL_LIST).all();
//通过page.addTargetRequests()方法来增加要抓取的URL
page.addTargetRequests(links);
System.out.println(links);
}
else {
System.out.println("记录数:"+temp++);
//page.putfield("title", page.getHtml().xpath("//[@class='detail-tit']/text()").toString());
baidu shuju = new baidu();
//问题标题
//这一句必须要加上,不然都用不了JsonFilePipeline方法。
page.putField("以下是需要的数据:",
page.getHtml().xpath("//*[@id=\"container\"]").all());
shuju.setAuthor(page.getHtml().xpath("//*[@id=\"container\"]").get());
new baiduDao().add(shuju);
// 把对象输出控制台
System.out.println(shuju);
}
}
//执行这个main方法,即可在控制台看到抓取结果。webmagic默认有3秒抓取间隔,请耐心等待。
public static void main(String[] args) {
//Spider是爬虫的入口类,addurl为入口url
Spider oschinaSpider = Spider.create(new souwenzhengti()).addUrl("http://wenwen.sogou.com/cate/tag?tag_id=137&tp=0&pno=0&ch=ww.fly.fy1#questionList")
//Pipeline是结果输出和持久化的接口,存储到我们需要的地方
.addPipeline(new JsonFilePipeline("F:/data"));
try {
//添加到JMT监控中
SpiderMonitor.instance().register(oschinaSpider);
//设置线程数
//oschinaSpider.thread(5);
oschinaSpider.run();
} catch (JMException e) {
e.printstacktrace();
}
}
}
相关阅读
【Python爬虫】 使用 tesserorc 进行 图像的识别 ---
在使用tesserorc 时 博主也遇到了诸多问题 在经过 四处碰壁 与 资料查找后 最终安装成功,并成功的完成了图像识别 ,
from urllib import request,parseimport ssl,json,pymysqlclass GaoKaoPaiSpider(object):def __init__(self):
#1.导包 import requests,os from lxml import etree from urllib.request import urlretrieve from urllib.parse import urljoi
文章目录引言怎么入门网络爬虫课程特色学完本课程能收获什么引言 互联网以及移动技术的飞速发展,使得全球数据量呈现前所未有的爆
近日,云立方日本、菲律宾等海外拨号VPS接连上线,表明其海外节点布局又完成重要一步。与传统VPS不同,动态IP拨号VPS可以在VPS服务器上