Java数据采集-5.获取CSDN个人博客列表(翻页-1)
2017-07-20 21:32
411 查看
本博客继上篇,针对第一种翻页加载数据的方式,编写实际代码演示。
因第三讲以详细介绍如何解析各个节点,之后教程不在详细截图说明分析过程,可根据我使用的css规则,自行对比分析。
废话不多说,开始撸代码。
模拟Url请求,获取节点
获取id=article_list下的div子标签
注意 “>”的用法,有id时首选id作为选择器
解析总页数
上篇博客已经分析,此类型网页我们需要获取到总页数,然后循环所有的列表页。
上述代码使用正则表达式获取总页数和总记录数,也可以使用String的字符串查找和截取刷选。PS:我就是为了装逼才使用的正则表达式…
遍历所有的列表页
解析列表页数据
本段代码即为上一段中的getData函数内容,获取每一个列表页,然后解析每一条数据,和第三篇博客相似,不在详细展示分析过程。对于零散的数据,此处使用正则表达式匹配,同样String截取也可以。
最后po上效果图:
仓库:https://github.com/geekfly2016/Spider
代码目录:Spider/src/xyz/geekfly/get_list/CSDN_BLOG.java
因第三讲以详细介绍如何解析各个节点,之后教程不在详细截图说明分析过程,可根据我使用的css规则,自行对比分析。
废话不多说,开始撸代码。
模拟Url请求,获取节点
String url = "http://blog.csdn.net/TMaskBoy/article/list/1"; Document document = Jsoup.connect(url) .userAgent("ozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36") .get(); Elements items = document.select("#article_list > div"); System.out.println(items.size());
获取id=article_list下的div子标签
注意 “>”的用法,有id时首选id作为选择器
解析总页数
上篇博客已经分析,此类型网页我们需要获取到总页数,然后循环所有的列表页。
//获取样例 69条 共7页 String page = document.select("#papelist > span").text(); //使用正则表达式匹配总页数 Pattern pattern = Pattern.compile("(.*?)条 共(.*?)页"); Matcher matcher = pattern.matcher(page); int total_count = 0, total_page_number = 0; if(matcher.find()){ total_count = Integer.parseInt(matcher.group(1)); total_page_number = Integer.parseInt(matcher.group(2)); }else{ System.out.println("未获取到总页数!"); System.exit(-1); } System.out.println(page);
上述代码使用正则表达式获取总页数和总记录数,也可以使用String的字符串查找和截取刷选。PS:我就是为了装逼才使用的正则表达式…
遍历所有的列表页
String url = "http://blog.csdn.net/TMaskBoy/article/list/"; for(int current_page = 1; current_page <= total_page_number; current_page++){ System.out.println("-------------------第" + current_page + "页开始-------------------------"); getData(url + current_page); //获取每一页的数据 System.out.println("-------------------第" + current_page + "页结束-------------------------"); }
解析列表页数据
本段代码即为上一段中的getData函数内容,获取每一个列表页,然后解析每一条数据,和第三篇博客相似,不在详细展示分析过程。对于零散的数据,此处使用正则表达式匹配,同样String截取也可以。
Document document = Jsoup.connect(url) .userAgent("ozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36") .get(); //获取列表所在位置 Elements items = document.select("#article_list > div"); //System.out.println(items.size()); //遍历每一个博客 for(Element item : items){ //获取标题 String title = item.select("h1 span a").text(); //获取标题地址 String href = "http://blog.csdn.net" + item.select("h1 span a").attr("href"); //使用正则匹配其他数据 样例:2017-07-20 20:15 阅读(1) 评论(0) String other_info = item.select(".article_manage").text(); Pattern pattern = Pattern.compile("(.*?) 阅读\\((.*?)\\) 评论\\((.*?)\\)"); Matcher matcher = pattern.matcher(other_info); String pubdate = ""; Integer read_number = 0, comment_number = 0; if(matcher.find()){ pubdate = matcher.group(1); //发布时间 read_number = Integer.parseInt(matcher.group(2)); //阅读数 comment_number = Integer.parseInt(matcher.group(3)); //评论数 } }
最后po上效果图:
仓库:https://github.com/geekfly2016/Spider
代码目录:Spider/src/xyz/geekfly/get_list/CSDN_BLOG.java
相关文章推荐
- Java数据采集-6.获取开源中国新闻列表(翻页-2)
- ASP.NET MVC+Bootstrap个人博客之后台dataTable数据列表(五)
- 初试Scrapy(三)上---CSDN自动登录获取博客分类列表
- 自动获取CSDN博客文章列表
- [置顶] Java数据采集-4.分析常见的翻页(加载数据)方式
- 初试Scrapy(三)下—CSDN自动登录获取博客分类列表
- CSDN爬虫(二)——博客列表分页爬虫+数据表设计
- 利用ASP.NET MVC和Bootstrap快速搭建个人博客之后台dataTable数据列表
- Android应用开发-小巫CSDN博客client之获取评论列表
- javaweb-react的入门遇到的问题三:ajax获取数据与循环处理放入列表
- java 中ResultSet可以获取的数据类型及返回值类型列表
- Python登录并获取CSDN博客所有文章列表代码实例
- 使用Jsoup 抓取本人CSDN博客文章列表的数据
- Java数据采集-7.Ajax无刷新请求(翻页-3)
- ASP.NET MVC+Bootstrap个人博客之后台dataTable数据列表(五)
- Java的 jsoup使用之抓取CSDN个人博客内容
- 02_使用WebMagic爬虫获取CSDN推荐专家的个人博客信息
- Python登录并获取CSDN博客所有文章列表
- java jsoup 爬虫爬asp.net网站遇到_doPostBack不能获取翻页数据解决办法
- 利用ASP.NET MVC和Bootstrap快速搭建个人博客之后台dataTable数据列表