网页数据抓取怎么写(针对开源中国新闻列表新版重新写代码抓取(抓取))
优采云 发布时间: 2021-11-22 14:24网页数据抓取怎么写(针对开源中国新闻列表新版重新写代码抓取(抓取))
最近看了几篇之前写的网页资料采集的博客,朋友们纷纷私信。想把这些重新整理一下,抽空继续更新这个系列的博客。
重写代码捕获新版开源中国新闻列表。
网址:
jar包:jsoup.1.7.2.jar
项目源码:
Elements items = document.select("#all-news .item");
System.out.println(items.size());
注意:因为有两个class,item和box,由于Jsoup选择器中需要写两个select,这里用一个来精确匹配。可以参考:
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;
}
注:打印链接时,发现部分链接是完整的,还有部分域名是自己拼接的,所以这里添加来判断是否已经启动。
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;
}
库:
代码目录:Spider/src/xyz/geekfly/oschina/News.java