网页数据抓取怎么写(针对开源中国新闻列表新版重新写代码抓取(抓取))

优采云 发布时间: 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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线