爬虫
来源:互联网 发布:c语言cgi编程 编辑:程序博客网 时间:2024/04/29 22:02
DescriptionCrawler.java
package com.bjsxt.crawler;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.jsoup.select.Elements;import cn.edu.hfut.dmic.webcollector.model.CrawlDatums;import cn.edu.hfut.dmic.webcollector.model.Page;import cn.edu.hfut.dmic.webcollector.plugin.berkeley.BreadthCrawler;//深度抓取(深度抓取指从首页往下抓几层)public class DescriptionCrawler extends BreadthCrawler{ //构造函数 String crawlPath抓取的路径 boolean autoParse是不是自动解析 public DescriptionCrawler(String crawlPath, boolean autoParse) { super(crawlPath, autoParse); // TODO Auto-generated constructor stub } //访问时,对当前页面怎么处理 @Override public void visit(Page page, CrawlDatums cd) { // TODO Auto-generated method stub System.out.println("====================我是可爱的分割线=============================="); System.out.println(page.getUrl()); //System.out.println(page.getHtml()); Elements title = page.select("div.tinfo>h2");//获取当前页面的Document文档对象 System.out.println("标题:" + title.text());//text表示获取标签内部的纯文本 //测测你有多了解奥运会? 13754人测试过 0次收藏 2016-08-06 10:00:00 69条评论 本测试共 10 题 String text = page.select("div.tinfo").text(); //利用正则表达式对数据进行筛选,利用5个分组获取我们需要的数据 //()代表分组,\\d表示数字 {1,}表示至少有一个数字,长度不限 (.{19}) .代表任意字符 2016-08-06 10:00:00 一共19个字符 String regex = " (\\d{1,})人测试过 (\\d{1,})次收藏 (.{19}) (\\d{1,})条评论 本测试共 (\\d{1,}) 题"; Pattern p = Pattern.compile(regex);//获得正则对象 compile编译 Pattern正则表达式对象 Matcher m = p.matcher(text);//获得比较器,从而获得比较结果,这里要把原始的字符串传递进去 while(m.find()){//通过循环获取比较结果 String testnum = m.group(1);//测试人数 String favnum = m.group(2);//收藏数 String createTime = m.group(3);//时间 String replynum = m.group(4);//评论 String questionNum = m.group(5);//题目 System.out.println(testnum + "|" + favnum + "|" + createTime + "|" + replynum + "|" + questionNum ); } Elements img = page.select("div.tshow>p.pbox>img"); System.out.println("图片地址为:" + img.attr("src")); System.out.println("描述信息:" + page.select("p.tdesc").text()); System.out.println("====================我是可爱的分割线(结束)=============================="); } public static void main(String[] args) throws Exception { //构造函数中两个参数分别抓取器的id与是否解析网页true DescriptionCrawler dc = new DescriptionCrawler("dc" , true); //定义抓取的入口 dc.addSeed("http://www.xinli001.com/ceshi"); //筛选URL的过滤条件 dc.addRegex("http://www.xinli001.com/ceshi/\\d{1,}"); //同时启动多少个线程进行抓取 dc.setThreads(5); //断点续爬功能开启 dc.setResumable(true); //启动爬虫,向下爬10层 dc.start(10); }}
lib
0 0
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 爬虫
- 无法连接上 archive.ubuntukylin.com:10006 (61.144.43.73),连接超时的错误。
- Linux进程操作
- Qt5位置相关函数
- 关于LoadRunner的迭代
- Udp协议编程
- 爬虫
- 集合比较器和输入输出流
- cgi的流程(未完成)
- 欢迎使用CSDN-markdown编辑器
- 修改ORACLE RAC心跳
- vc6 运行库的bug---C++程序稳定运行一段时间后异常中止
- LR 中手工关联web_reg_save_param 函数用法
- java初级之32继承
- Oracle RAC中新增节点