java 使用webmagic 爬虫框架爬取博客园数据存入数据库
来源:互联网 发布:av马赛克去除软件mac 编辑:程序博客网 时间:2024/05/21 17:04
java 使用webmagic 爬虫框架爬取博客园数据存入数据库
webmagic简介:
WebMagic是一个简单灵活的Java爬虫框架。你可以快速开发出一个高效、易维护的爬虫。
http://webmagic.io/
准备工作:
Maven依赖(我这里用的Maven创建的web项目做测试):
View Code
数据库表SQL:
CREATE TABLE `Boke` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`title` varchar(255) DEFAULT NULL COMMENT '标题',
`linke` varchar(255) DEFAULT NULL COMMENT '正文地址',
`author` varchar(255) DEFAULT NULL COMMENT '作者'
`authorUrl` varchar(255) DEFAULT NULL COMMENT '作者主页',
`summary` varchar(1000) DEFAULT NULL COMMENT '简介',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4890 DEFAULT CHARSET=utf8;
数据库链接工具类:
View Code
实体类:
View Code
webmagic 框架爬取数据并保存
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
import com.mysql.jdbc.Connection;
import com.nio.webmagic.jdbc.MySqlJdbcUtils;
import com.nio.webmagic.model.JavaBokeModel;
/**
*
* 爬虫
*
* @version [VCES V201R001, 2017年10月12日]
*
* @see 方法实现 PageProcessor
* @since [产品/模块版本]
*/
public class JavaBoKePageProcessor implements PageProcessor {
private static Connection conn=null;
private static PreparedStatement ps =null;
//标题和链接获取
private static String TITLEQUERY="div.post_item_body h3 a.titlelnk";
//作者
private static String AUTHORQUERY="div.post_item_foot a.lightblue ";
//简介
private static String SUMMARYQUERY="div.post_item_body p.post_item_summary";
//插入sql语句
private static String insertSql ="INSERT INTO Boke (title,linke,author,authorUrl,summary)VALUES(?,?,?,?,?)";
//初始链接
private static Connection getConnection(){
if (conn==null) {
conn = MySqlJdbcUtils.getOpenConnection();
}
return conn;
}
/**
*
* insert操作
*
* @date 2017年8月31日
* @return
*/
private synchronized void insertDb(List javaBokes){
try {
ps = conn.prepareStatement(insertSql);
for (JavaBokeModel javaBoke:javaBokes) {
ps.setString(1, javaBoke.getTitle().toString());
ps.setString(2, javaBoke.getLinke().toString());
ps.setString(3, javaBoke.getAuthor().toString());
ps.setString(4, javaBoke.getAuthorUrl().toString());
ps.setString(5, javaBoke.getSummary().toString());
ps.executeUpdate();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//初始化带爬取网页地址
private static List urls(){
List listUrl =new ArrayList();
for (int i = 2; i <=200; i++) {
//listUrl.add("http://www.cnblogs.com/cate/java/"+i);
listUrl.add("http://www.cnblogs.com/cate/java/"+i);
}
listUrl.toArray(new String[listUrl.size()]);
return listUrl;
}
/**
*
* jsoup根据 html 字符串和语法获取内容;
* @date 2017年8月31日
* @param htmlText
* @return
*/
private static String seletDocumentText(String htmlText,String Query){
Document doc = Jsoup.parse(htmlText);
String select = doc.select(Query).text();
return select;
}
/**
*
* jsoup根据 html 字符串和语法获取链接地址;
* @date 2017年8月31日
* @param htmlText
* @return
*/
private static String seletDocumentLink(String htmlText,String Query){
Document doc = Jsoup.parse(htmlText);
String select = doc.select(Query).attr("href");
return select;
}
/**
* process是定制爬虫逻辑的核心接口,在这里编写抽取逻辑
* @see us.codecraft.webmagic.processor.PageProcessor#process(us.codecraft.webmagic.Page)
*/
@Override勃起时间短是怎么回事
public void process(Page page) {
//
page.addTargetRequests(urls());
//div[@class='post_item']//div[@class='post_item_body']//h3//a[@class='titlelnk']/text()'
// 定义如何抽取页面信息,并保存下来
List htmls =page.getHtml().xpath("//div[@class='post_item']/html()").all();
List javaBokes=new ArrayList();
for (String html:htmls) {
JavaBokeModel javaBoke =new JavaBokeModel();
//标题和链接
String title =seletDocumentText(html,TITLEQUERY);
String linke =seletDocumentLink(html,TITLEQUERY);
//作者和作者主页
String author=seletDocumentText(html, AUTHORQUERY);
String authorUrl=seletDocumentLink(html, AUTHORQUERY);
//简介成都男性阴茎延长术
String summary=seletDocumentText(html, SUMMARYQUERY);
javaBoke.setTitle(title);
javaBoke.setAuthor(author);
javaBoke.setAuthorUrl(authorUrl);
javaBoke.setLinke(linke);
javaBoke.setSummary(summary);
javaBokes.add(javaBoke);
}
insertDb(javaBokes);
}
@Override
public Site getSite() {
//抓去网站的相关配置包括:编码、重试次数、抓取间隔
return Site.me().setSleepTime(1000).setRetryTimes(10);
}
public static void main(String[] args) {
long startTime ,endTime;
System.out.println("========小爬虫【启动】喽!=========");
getConnection();
startTime = new Date().getTime();
//入口
Spider create = Spider.create(new JavaBoKePageProcessor());
//定义入口地址
create.addUrl("http://www.cnblogs.com/cate/java/").thread(5).run();
try {男人为何精子少
ps.close();
conn.close();
} catch (Exception e) {
// TODO: handle exception
}
endTime = new Date().getTime();
System.out.println("========小爬虫【结束】喽!=========");
System.out.println("用时为:"+(endTime-startTime)/1000+"s");
}
}
- java 使用webmagic 爬虫框架爬取博客园数据存入数据库
- java 爬虫框架 webmagic
- Java爬虫框架WebMagic的使用总结
- Java爬虫框架WebMagic的使用总结
- Java爬虫框架WebMagic的使用总结
- 使用WebMagic爬虫框架及javaEE SSH框架将数据保存到数据库(一)
- 爬虫爬取信息存入数据库
- 【爬虫】WebMagic结合Spring mvc爬取数据进行存储
- 【爬虫】WebMagic结合Spring mvc爬取数据进行存储
- WebMagic Java爬虫框架初探
- 大数据采集:爬虫框架之WebMagic的基本使用
- java 爬虫 WebMagic-使用入门
- Java爬虫--利用HttpClient和Jsoup爬取博客数据并存入数据库
- Java开源爬虫框架WebCollector爬取CSDN博客
- WebMagic爬虫框架及javaEE SSH框架将数据保存到数据库(二)
- 使用WebMagic爬虫框架爬取暴走漫画
- WebMagic 爬虫框架的入门使用
- 使用WebMagic爬虫框架爬取暴走漫画
- Some frequent operation of the git
- iMindMap在教学中的实际应用
- C++进阶—>friend
- 第三方类库-Core核心库-Apache Commons Lang-1
- Lucene&全文检索
- java 使用webmagic 爬虫框架爬取博客园数据存入数据库
- win10系统很快自动休眠的解决方法
- Instruments 中 Core Animation优化(二)
- 写一个单例
- 从开发到部署会用到的 Docker 命令【已翻译100%】
- 手机运营商匹配
- 八皇后问题递归实现
- asio strand
- centos脚本安装mariadb-server(二进制)