Java数据采集-3.抓取开源中国新闻(新版)
来源:互联网 发布:winscp mac版下载 编辑:程序博客网 时间:2024/06/14 21:23
最近看之前写的几篇网页数据采集的博客,陆陆续续的有好友发私信交流,又想重新整理一下这些了,抽空继续更新本系列博客。
针对开源中国新闻列表新版,重新写代码抓取。
网址:https://www.oschina.net/news
jar包:jsoup.1.7.2.jar
项目源码:https://github.com/geekfly2016/Spider
- 分析新闻列表所在位置
- 根据上图我们可以看出,新闻列表全部都在该div下。
<div class="news-list-item" id="all-news"><!--文章列表--></div>
- 单个新闻位于该div下。
<div class="item box"></div>
- 故选择新闻列表的代码即为:
Elements items = document.select("#all-news .item");System.out.println(items.size());
注:因为class有两个,item和box,由于Jsoup选择器中需写两个select,此处使用一个即可精确匹配。可参看:http://blog.csdn.net/ywf008/article/details/53215648
分析单条新闻信息
标题位于第一个a标签下,标题地址为href参数
String title = item.select("a").first().text();String title_href = item.select("a").first().attr("href");if(!title_href.startsWith("https://")){ title_href = host + title_href; }
注:抓取时打印链接发现部分链接已为完整的,有些许自行拼接域名,故此处加了判断是否已https://开始。
- 新闻描述
String desc = item.select("div[class=sc sc-text text-gradient wrap summary]").text();
对于属性有多个值得时候,除了上述提到的使用某个能确定的值或者使用多个select选择器外,也可以使用div[class=xx yy zz]这种模式匹配(推荐方式)。
- 用户头像
String author_image = item.select("img[class=avatar]").attr("src");
或者
String author_image = item.select("img").first().attr("src");
获取方式都不唯一
- 作者姓名
Element mr = item.select(".from .mr").get(0);//作者String author = mr.select("a").text();// 从span[class=mr]中移除a标签,输出的即为发布时间mr.select("a").remove();String published = mr.text();
- 获取评论数
String number = item.select(".from .mr").last().text();
至此,我们已经可以完整获取当前页的新闻数据了。
注:新闻列表数据中包含一条广告数据
- 过滤代码
//过滤广告if(!item.attr("data-tracepid").isEmpty()){ continue;}
仓库:https://github.com/geekfly2016/Spider
代码目录:Spider/src/xyz/geekfly/oschina/News.java
下一篇更新翻页数据如何获取。
阅读全文
1 0
- Java数据采集-3.抓取开源中国新闻(新版)
- Java数据采集-6.获取开源中国新闻列表(翻页-2)
- java 采集新闻数据
- nodejs 采集新闻数据
- nodejs 采集新闻数据
- Android新闻阅读器(数据抓取)
- Web数据采集(抓取)介绍
- java新闻抓取程序代码
- java多线程抓取新闻
- java多线程抓取新闻
- Java 根据关键字抓取google 新闻 网络数据 .*
- 网络爬虫/数据抓取,反爬虫(更新版)
- 使用Jsoup异步抓取新闻数据装载listview(仿开源中国资讯列表)
- 大数据抓取采集框架
- 数据采集(三):用XPath爬取腾讯新闻
- c#数据采集(定向抓取)【待整理】
- 网页数据抓取之新浪新闻数据
- 【多线程数据采集之三】java抓取数据+破解屏蔽ip访问 .
- BaseAdapter
- 二叉树的基本实现(一)
- 多重循环 方法和递归练习题+参考答案
- js实现简单的计算器
- 汉诺塔
- Java数据采集-3.抓取开源中国新闻(新版)
- SAR
- Day 1
- asp.net ibaitsNet初始化SqlMap.config
- bzoj 3696 化合物 解题报告
- POJ3176 解题报告
- Android Studio 在使用华为手机真机调试时Log无法打印的情况
- android_ContentProvider获取手机联系人
- 关于php oracle oci_8扩展