Java 爬虫

Java 爬虫



一、Jsoup

1. 爬取本地HTML文件

用Jsoup读取本地HTML文件需要File类打开相应文件并用Jsoup.parse()方法进行文件与DOM对象的转换

File desktopDirFile =FileSystemView.getFileSystemView().getHomeDirectory();
//getHomeDirectory()方法获取桌面路径,用于将生成的存储数据的Excel文件存放在桌面

File doce = new File(desktopDirFile.getAbsoluteFile()+"/xxx.html");
//getAbsoluteFile()方法获取desktopDirFile的绝对路径,doce获取放置在桌面上的文件

Document doc = Jsoup.parse(doce,"UTF-8");
//将doce文件对象转为UTF-8格式的DOM文档


2. 爬取网络HTML文件

读取网络HTML文档主要使用Jsoup.connect().get()方法

Document doc = Jsoup.connection("http://xxx.html").get();

Jsoup不能获取一些JS动态生成的数据,如果需要进行动态数据的爬取,需要使用selenium

有时下载HTML文档时会显示错误Connect timed out,说明响应时间过长,超出阈值,此时需要设置timeout

Document doc = Jsoup.connection("http://xxx.html").timeout(1000).get();
//timeout中的值设置尽可能大即可,设置为0时,永不超时

部分页面加载时会报错,若不忽略报错,难以进行后续操作

Jsoup.connect("").timeout(0).ignoreHttpErrors(true);
//设置为true时,即为忽略HTTP报错

3. DOM查询

根据id查询标签

Element element01 = doc.getElementById("some_id");

获取子标签

Elements element02 = element01.children();
//虽然children返回的是Elements,但Elements创建的对象并不能当作数组使用

访问首个子标签

Element element03 = element02.first();

访问子标签的下一个兄弟标签

Element element04 = element03.nextElementSibling();

获取标签的属性值

element.attr("Attribute_name");

获取父标签

Element father = element.parent();

根据id查询标签

Element element05 = element.getElementById("id_name");

根据class查询标签

Elements elements06 = element.getElementsByClass();
//根据class查询时,相应的对象必须是Elements,因为class不像id一样唯一

根据标签属性名称查询标签

Elements element07 = element.getElementsByAttribute("Attribute_name");

根据标签属性值查询标签

Elements element08 = element.getElementsByAttributeValue("Attribute_name", "Attribute_value");

循环遍历查询的子标签

for (Element element : elements) {}


Maven依赖导入
<dependency>
			<groupId>org.jsoup</groupId>
			<artifactId>jsoup</artifactId>
			<version>  1.8.2</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值