Java爬虫--利用HttpClient和Jsoup爬取博客数据并存入数据库
来源:互联网 发布:社交网络有哪些 编辑:程序博客网 时间:2024/06/05 14:48
由于今日头条等头条类产品的出现,以今日头条为代表所使用的爬虫技术正在逐渐火热,在爬虫领域具有良好性能和较好效果的Python在最近一年的时间里逐渐火热起来,同时因为Python良好的数据分析和机器学习的能力,Python的应用越来越广泛。不过,今天我们要提到的是基于java 的简单爬虫,为使用java作为开发语言的人做一个参考。
爬虫实现
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
httpClient操作代码,值得注意的是,我们将html存入数据库的时候,最好将数据库对应的字段设置为text类型或者是longtext类型。存入的时候使用setString即可。否则可能 出现。Data too long for row错误。
public class pachongMain { public static void main(String[] args) throws Exception { for (int j = 2000; j >0; j = j - 1) { CloseableHttpClient client = HttpClients.createDefault(); HttpGet get = new HttpGet("http://www.bysocket.com/?p=" + j); HttpResponse response = client.execute(get);// System.out.println(response.getStatusLine().getStatusCode()); if (response.getStatusLine().getStatusCode() !=200 ) { continue ; } HttpEntity entity = response.getEntity(); String content = EntityUtils.toString(entity, "utf-8"); // 使用Jsoup解析网页 Document doc = Jsoup.parse(content); Elements element3 = doc.select("h1[class=entry-title]"); String title = element3.text(); Elements element2 = doc.select("div[class=entry-content]"); String article =element2.html(); new StoreData().store(j,article,title); } }}
数据存储类
public class StoreData { public void store(Integer id, String content, String title) throws Exception { String driverClassName = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"; String username = "root"; String password = "123456"; // 加载驱动类 Class.forName(driverClassName); Connection con = (Connection) DriverManager.getConnection(url, username, password); // 创建sql语句模板 String sql = "INSERT blog VALUES(?,?,?)"; // 创建一个声明对象 PreparedStatement pst = (PreparedStatement) con.prepareStatement(sql); // 用循环将数据添加到sql模板中 pst.setInt(1, id); pst.setString(2, content); //pst.set pst.setString(3, title); pst.addBatch(); // 将sql语句发送到mysql上 int[] res = pst.executeBatch(); System.out.println(res); pst.close(); }}
爬取的效果:
但是只是这种普通的爬取会出现请求超时的情况,
出现这种请求头设置有误,使用浏览器,分析请求信息,对于url请求,将请求头信息添加到java的程序中即可。
爬取博客: 泥瓦匠BYSocket
阅读全文
0 0
- Java爬虫--利用HttpClient和Jsoup爬取博客数据并存入数据库
- 简单爬虫,爬取CSDN博客阅读数量并存入数据库
- 创建爬虫----爬取大众点评数据并存入mongoDB数据库
- 实战爬虫-爬取红袖添香并存入数据库
- java 爬虫实现爬豆瓣电影数据并存入mysql数据库
- 利用jsoup和httpclient来进行网站的爬取
- 爬取电影天堂并存入数据库
- Java爬虫学习:利用HttpClient和Jsoup库实现简单的Java爬虫程序
- 利用Scrapy框架爬取博客信息并存到mysql数据库
- scrapy 爬取网站并存入数据库实例
- scrapy整合hbase爬取数据并存入hbase
- Java爬虫进阶-Jsoup+httpclient获取动态生成的数据
- Java爬虫历险记 -- (2)爬取数据并存放到mysql
- java获取excel中数据并存入数据库表中
- java 使用webmagic 爬虫框架爬取博客园数据存入数据库
- httpclient/jsoup爬取图片
- 利用HttpClient和Jsoup实现从网站中抓取数据
- python爬虫:爬取豆瓣读书某个tag下的书籍并存入excel
- 前端登陆加密和后端解密
- 招警考试技巧——近代著名画家简介
- RTMPdump(libRTMP)源代码分析 4: 连接第一步——握手(Hand Shake)
- Javascript 打印九九乘法表
- android 事件分发机制详解(二)
- Java爬虫--利用HttpClient和Jsoup爬取博客数据并存入数据库
- SVN(TortoiseSVN)提交时忽略bin和obj目录
- webview加载html时使用assets文件夹下的css或者js文件
- Logging相关源码分析
- Spring源码阅读-- IOC容器资源定位
- 几维安全介绍iOS应用加密常用算法和代码实践
- 简单线程池的实现--JAVA/Python
- Android中WebView使用6,js调java实现播放视频
- 对于原码、反码、补码的理解