java实现简单爬虫(使用Jsoup)完成搜狐新闻信息爬取

编程入门 行业动态 更新时间:2024-10-20 07:50:00

java实现简单<a href=https://www.elefans.com/category/jswz/34/1770264.html style=爬虫(使用Jsoup)完成搜狐新闻信息爬取"/>

java实现简单爬虫(使用Jsoup)完成搜狐新闻信息爬取

今天突发奇想,由于自己开发的项目是一个死的,任何东西都是自己发布的,因此是否可以实现一个简单爬虫,来让程序执行呢?

使用Jsoup来实现简单java网络爬虫。

Jsoup是一款Java的HTML解析器,主要用来对HTML代码的。他可以让你的java程序想JavaScript一样可以按标签查找你所需要的信息,Jsoup非常好的一点是即使网页中源码布局非常不规整,Jsoup都可以自动将HTML程序布局规整。Jsoup缺点就是,它只支持静态页面的爬取,比如今日头条,它是用js渲染得到的,就无法使用Jsoup来进行爬取了,这时需要使用Jsoup+HttpUnit来实现。 Jsoup使用文档:Jsoup开发指南

今天以搜狐新闻为例来爬取信息。

第一步导入Maven依赖:

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.10.2</version>
</dependency>

接下来示范代码,爬取的是搜狐新闻一部分的信息(并没有全部爬下来),主要是用法,实现代码如下(其中夹杂一下我的过程处理代码,比如for循环中的各个if语句,可以根据自己需求来设置):

package com.jsoup;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;import java.io.*;
// 爬取搜狐新闻部分信息
public class JsoupTest {public static void main(String[] args) throws IOException {Document doc = Jsoup.connect("/").get();// 2.jsoup获取新闻<a>标签Elements newsATags = doc.select("div.main-right").select("div.list16").select("ul").select("li").select("a");for (Element element:newsATags){String url=element.attr("href");if(url.indexOf("//")==0 || url.indexOf("/")<0)continue;String title=element.attr("title");Document dm=Jsoup.connect(url).get();Elements em=dm.select("p").select("img");if(em==null || em.size()<1)continue;String img=em.get(0).attr("src");if(img.indexOf("//")==0){img=img.substring(2);}System.out.println("url: "+url+"  title: "+title+" image: "+img);}}
}

输出结果如下:

url:   title: 港媒列示威者“十宗罪” 追问港铁为何“双标”对待 image: .jpeg
url:   title: 内地游客在香港当街被抢 手及腹部受伤损失1万余元人民币 image: .png
url:   title: 紧随脸书推特 YouTube删除210个涉港账号 image: .jpeg
url:   title: 31省份低保标准公布:上海、北京、天津位居前三 image: .jpeg
url:   title: 工信部:达量限速套餐等影响网速 4G至少还能用10年 image: .png
url:   title: 浦东新区消保委:上海迪士尼不接受调解 坚持翻包检查 image: .jpeg
url:   title: 大学老师不写论文都可以评教授?高校回应 image: .jpeg
url:   title: 任正非:不会求美国放华为一马 不在贸易协议中委曲求全 image: .jpeg
url:   title: 河南被性侵坠亡女生家属:对方曾称愿赔200万了事 image: .jpeg
url:   title: 加拿大驻香港总领事馆:暂停本地雇员去中国内地 image: .png
url:   title: “亚马孙雨林要烧没了” 一场虚假传播如何在全球掀起? image: .png
url:   title: 英国首相踩桌子让马克龙擦鞋?这张照片让网友吵翻了(图) image: .jpeg
url:   title: 特朗普为何要购买格陵兰岛?或看上其军事价值和稀土 image: .jpeg
url:   title: 哈尔滨一街道多个仓库被淹 商户:未接到水库泄洪通知 image: .jpeg
url:   title: 四川丹巴警方通报“女子深夜当街遭男子踢打”:涉案人已到案 image: .jpeg
等等。。。。。

在来一段爬取搜狐娱乐的爬虫代码(和上面一样只爬取一部分代码),实现如下:

package com.jsoup;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;import java.io.*;public class JsoupTest2 {public static void main(String[] args) throws IOException {Document document= Jsoup.connect("/").get();Elements elements=document.select("div.passage-info");for (Element element:elements){String url=element.select("div.passage-content").select("a").attr("href");if(url.indexOf("//")==0) url=url.substring(2);url="http://"+url;String title=element.select("div.passage-content").select("a").text();String image=element.select("div.passage-image").select("img").attr("src");if(image.indexOf("//")==0) image=image.substring(2);int firstDot=image.indexOf("/");String pre=image.substring(0,firstDot);int lastDot=image.indexOf("images");String end=image.substring(lastDot);image="http://"+pre+"/"+end;System.out.println("url: "+url+"  title: "+title+"  image: "+image);}System.out.println("OK...");}
}

输出结果如下:

url:   title: 淡出谢娜晒照刷存在脖子戴金锁,但金锁范冰冰戴鸽子蛋,对比寒酸   image: .jpg
url:   title: 为张翰减肥,把胡彦斌写在书里的郑爽,这次直接把张恒带进了节目   image: .jpeg
url:   title: 郑爽与张翰同框是男友张恒特意安排,昔日感情如今已经彻底放下   image: .jpg
url:   title: 沈腾为儿子办周岁,“小狮子”可爱呆萌,老婆王琦发福似贾玲   image: .jpeg
url:   title: 徐峥在线撒糖,表白妻子陶虹:陶虹是大家的,但我是她的私有财产   image: .jpeg
等等。。。

 

OK,以上就是使用Jsoup实现的java爬虫,项目代码没办法在这展示,这里就用两个test类来简单实现一下。

 

更多推荐

java实现简单爬虫(使用Jsoup)完成搜狐新闻信息爬取

本文发布于:2024-02-13 13:24:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1758682.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爬虫   简单   搜狐新闻   信息   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!