Java程序中使用 Jsoup 爬虫( 简单示例 )
一、maven项目里pom添加jsoup依赖
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
以抓取CSDN主页的右侧导航栏为例

代码示例:
package com.oukele.csdn_demo; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; import java.io.IOException; public class CsdnCrawlDemo { public static void main(String[] args) {
//目标地址
String url = "https://www.csdn.net/";
try {
Document document = Jsoup
.connect(url)
.header("user-agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36")
.get();
// 右侧导航栏
Elements nav_com = document.getElementsByClass("nav_com");
Elements elements = nav_com.select("ul>li");
for (Element element : elements) {
System.out.println("导航标题:"+element.text()+"\t标题访问地址:"+element.select("a").attr("href")+"\r\n");
//这里 我们可以 根据 得到的访问链接 再进行 爬取.........
}
} catch (IOException e) {
System.out.println("出现错误:"+e.getMessage());
} } }
运行结果:
导航标题:推荐 标题对应的链接:/ 导航标题:最新文章 标题对应的链接:/nav/newarticles 导航标题:关注 标题对应的链接:/nav/watchers 导航标题:资讯 标题对应的链接:/nav/news 导航标题:人工智能 标题对应的链接:/nav/ai 导航标题:云计算/大数据 标题对应的链接:/nav/cloud 导航标题:区块链 标题对应的链接:https://blockchain.csdn.net 导航标题:数据库 标题对应的链接:/nav/db 导航标题:程序人生 标题对应的链接:/nav/career 导航标题:游戏开发 标题对应的链接:/nav/game 导航标题:研发管理 标题对应的链接:/nav/engineering 导航标题:前端 标题对应的链接:/nav/web 导航标题:移动开发 标题对应的链接:/nav/mobile 导航标题:物联网 标题对应的链接:/nav/iot 导航标题:运维 标题对应的链接:/nav/ops 导航标题:计算机基础 标题对应的链接:/nav/fund 导航标题:编程语言 标题对应的链接:/nav/lang 导航标题:架构 标题对应的链接:/nav/arch 导航标题:音视频开发 标题对应的链接:/nav/avi 导航标题:安全 标题对应的链接:/nav/sec 导航标题:其他 标题对应的链接:/nav/other
示例代码源码:https://github.com/oukele/Java-Crawl
Java程序中使用 Jsoup 爬虫( 简单示例 )的更多相关文章
- 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案
方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...
- 在java程序中访问windows有用户名和密码保护的共享目录
在java程序中访问windows有用户名和密码保护的共享目录 Posted on 2015-11-20 14:03 云自无心水自闲 阅读(3744) 评论(0) 编辑 收藏 --> Jav ...
- java程序中获取kerberos登陆hadoop
本文由作者周梁伟授权网易云社区发布. 一般我们在使用kbs登陆hadoop服务时都直接在shell中调用kinit命令来获取凭证,这种方式简单直接,只要获取一次凭证之后都可以在该会话过程中重复访问.但 ...
- Derby安装,创建数据库,在Java程序中使用Derby
1,下载并安装Derby: 下载地址:http://db.apache.org/derby /derby_downloads.html,下载最新版本. 我用的是10.5.3.0. 解压缩到任意文件夹, ...
- Linux上从Java程序中调用C函数
原则上来说,"100%纯Java"的解决方法是最好的,但有些情况下必须使用本地方法.特别是在以下三种情况: 需要访问Java平台无法访问的系统特性和设备: 通过基准测试,发现Jav ...
- 如何在java程序中调用linux命令或者shell脚本
转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...
- Java程序中调用Python脚本的方法
在程序开发中,有时候需要Java程序中调用相关Python脚本,以下内容记录了先关步骤和可能出现问题的解决办法. 1.在Eclipse中新建Maven工程: 2.pom.xml文件中添加如下依赖包之后 ...
- java程序中默认浮点形值常量是什么类型的?如何区分不同类型的浮点型整数值常量?
java程序中默认浮点形值常量是什么类型的 默认的所有的浮点型数值都是double型
- java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量?
java程序中默认整形值常量是什么类型的?如何区分不同类型的整型数值常量? 整数值默认就是int类型,只有在数值常量后面加“L”或“l”才表明该常量是long型
随机推荐
- Redis(1.8)Redis与mysql的数据库同步(缓存穿透与缓存雪崩)
[1]缓存穿透与缓存雪崩 [1.1]缓存和数据库间数据一致性问题 分布式环境下(单机就不用说了)非常容易出现缓存和数据库间的数据一致性问题,针对这一点的话,只能说,如果你的项目对缓存的要求是强一致性的 ...
- SqlServer中获取所有数据库,所有表,所有字段
原文:SqlServer中获取所有数据库,所有表,所有字段 一.获取所有数据库 select * from master.dbo.SysDatabases 二.获取某个库中所有表 SELECT * F ...
- Java 常提到的自然序(Natural Ordering)
Natural Ordering常在容器中被提到,和迭代器一起出现. 在Comparable接口的API规范中找到了描述. (https://docs.oracle.com/javase/8/docs ...
- CW2A与CA2W
字符串的ASCII和UNICODE之间的转换 1)Win32提供了API函数MultiByteToWideChar和WideCharToMultiByte来提供这种功能. 2)ATL还提供了另一套转换 ...
- 题解 UVA1316 【Supermarket】
题目链接: https://www.luogu.org/problemnew/show/UVA1316 思路: 根据题目意思,我们需要用到贪心的思想,越晚过期的商品当然是越晚卖好.同时你假如有多个商品 ...
- Flutter 之页面状态保持
一般情况下,我们使用tab切换的时候希望操作完毕之后,能够记住上个页面的状态, 但是使用Flutter的BottomNavigationBar的 时候默认是不记录页面状态的,即切换页面会导致重新加载. ...
- 【Zabbix】分布式监控系统Zabbix【二】
一.Zabbix基本操作 1.主机群组.主机.模板.触发器 a.创建主机群组和主机的过程比较简单,不再介绍 b.配置模板: 创建一个模板,将其分组到Template组,添加配置应用: 给应用创建监控项 ...
- react+antd引入 阿里图标
import iconfont from '../../../../assets/fonts/iconfont.js' const Iconfont = Icon.createFromIconfont ...
- js对象的所有方法
Object构造方法 Object.assign() 将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象. Object.create() 用指定的原型对象和属性创建一个新对象. Object ...
- thinkphp5.0 field和with连用的问题
field在with后面时field会不起作用,会查询数据库中全部的字段: field在with前面时会无法筛选联表的字段 解决办法把with换成join,field和join顺序无所谓 * @par ...