Java学习笔记:爬虫-用Jsoup解析网页

article/2025/9/28 14:10:09

什么是爬虫

1、爬虫:程序代替人的人工操作,自动获取网页内容,并且从其中提取出来有价值信息。

2、原始:调用Http的类向服务器发出请求,获得HTML,然后用正则表达式等去分析。缺点:难度高。

3、Jsoup:简单易用的Http请求操作以及查找元素的操作。

Maven包名:jsoup

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.15.2</version>
</dependency>
导入包

Jsoup基本使用

Document doc = Jsoup.connect(“https://www.youzack.com/”).get();//发出请求

Element tucao = doc.getElementById(“tucao”);//使用唯一id查找元素

String href = tucao.attr(“href”);//获取元素属性

String text = tucao.text();//获取元素内部文本

System.out.println(href+":"+text);

 选择jsoup.nodes别选错

用框架就很简单实现

package Part6;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;import java.io.IOException;public class JSoup1 {public static void main(String[] args) throws IOException {Document doc = Jsoup.connect("https://www.youzack.com/").get();//发出请求Element link = doc.getElementById("tucao");//使用唯一id查找元素String href = link.attr("href");//获取元素属性String text = link.text();//获取元素内部文本System.out.println(href+":"+text);System.out.println(text);}
}

Jsoup其他定位元素的方法

根据标签查找元素: getElementsByTag(String tag)

根据class查找元素: getElementsByClass(String className)

根据属性查找元素: getElementsByAttribute(String key)

兄弟遍历方法: siblingElements(), firstElementSibling(), lastElementSibling(); nextElementSibling(), previousElementSibling()

层级之间遍历: parent(), children(), child(int index)

应用案例:获取网页中所有的超链接;获取youzack听力中某个专辑下所有的音频名字;

应用案例1

获取网页中所有的超链接

Elements links = doc.getElementsByTag("a");

for(Element link: links)

{

  String href = link.attr("href");

  String text = link.text();

  System.out.println(href+":"+text);

}

package Part6;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 JSoup1 {public static void main(String[] args) throws IOException {Document doc = Jsoup.connect("https://www.youzack.com/").get();//发出请求Element link = doc.getElementById("tucao");//使用唯一id查找元素String href = link.attr("href");//获取元素属性String text = link.text();//获取元素内部文本System.out.println(href+":"+text);System.out.println(text);Elements links=doc.getElementsByTag("a");for (Element a:links){System.out.println(a.attr("href")+","+a.text());}}
}

抓图片的路径

Elements elements= doc.getElementsByTag("img");for (Element img :elements){System.out.println(img.attr("src"));}

 多个class下的文本爬取

 Elements covers=doc.getElementsByClass("cover");for (Element text :covers){System.out.println(covers.text());}

应用案例2

获取youzack听力中某个专辑下所有的音频名字

Document doc = Jsoup.connect("https://www.youzack.com/ListeningExercise/AlbumIndex/10/").get();

var weui_cells  = doc.getElementsByClass("weui-cells").get(0);

Elements links = weui_cells.getElementsByTag("a");

for(Element link : links)

{

  String text = link.text();

  System.out.println(text);

}

package Part6;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 JSoup1 {public static void main(String[] args) throws IOException {
//        Document doc = Jsoup.connect("https://www.youzack.com/").get();//发出请求/*Element link = doc.getElementById("tucao");//使用唯一id查找元素String href = link.attr("href");//获取元素属性String text = link.text();//获取元素内部文本System.out.println(href+":"+text);System.out.println(text);Elements links=doc.getElementsByTag("a");for (Element a:links){System.out.println(a.attr("href")+","+a.text());}*//*Elements elements= doc.getElementsByTag("img");for (Element img :elements){System.out.println(img.attr("src"));}*//*Elements covers=doc.getElementsByClass("cover");for (Element text :covers){System.out.println(covers.text());}*/Document doc = Jsoup.connect("https://www.youzack.com/ListeningExercise/AlbumIndex/10/").get();Element div = doc.getElementsByClass("weui-cells").get(0);Elements links = div.getElementsByTag("a");//在class="weui-cells"的div内部查找所有的a标签for(Element link : links){String text = link.text();String href=link.attr("href");System.out.println(text+":"+href);}}
}


http://chatgpt.dhexx.cn/article/42jJZXNr.shtml

相关文章

jsoup爬虫

文章目录 1、jsoup爬虫简单介绍2、相关代码2.1导入pom依赖2.2、图片爬取2.3、图片本地化 3、百度云链接爬虫 1、jsoup爬虫简单介绍 jsoup 是一款 Java 的HTML 解析器&#xff0c;可通过DOM&#xff0c;CSS选择器以及类似于JQuery的操作方法来提取和操作Html文档数据。 这两个…

解析卷积神经网络学习笔记——魏秀参

第二章 CNN基本部件 1.理解批处理和随机梯度下降&#xff1a; 训练模型时随机选取n个训练样本作为一个batch&#xff08;批输入&#xff09;&#xff0c;那么经过设计好的卷积神经网络就可以输出n个预测值&#xff0c;对这n个预测值求其损失函数&#xff08;注意损失函数绝不是…

【干货】卷积神经网络Alex-Net、VGG-Nets、Network-In-Network案例分析

目录 Alex-Net 网络模型 VGG-Nets 网络模型 Network-In-Network 本文将以 Alex-Net、VGG-Nets、Network-In-Network 为例&#xff0c;分析几类经典的卷积神经网络案例。 在此请读者注意&#xff0c;此处的分析比较并不是不同网络模型精度的“较量”&#xff0c;而是希望读者…

2018年国内十大技术突破:22纳米光刻机、大型航天器回收

https://www.toutiao.com/a6639830026990649860/ 2018-12-28 08:11:39 盘点这一年的核心技术&#xff1a;22纳米光刻机、450公斤人造蓝宝石、0.12毫米玻璃、大型航天器回收、盾构机“弃壳返回”、远距离虹膜识别……哪一个不夺人眼球&#xff01; 1 智能水刀削铁断金 10月份的…

AI的螺旋式上升?今日头条AI掌门人马维英离职,“重返”清华从事培育科研工作

2020-07-29 01:22:49 作者 | 蒋宝尚 编辑 | 丛 末 据媒体报道&#xff0c;字节跳动副总裁、人工智能实验室主任马维英离职&#xff0c;将到清华大学智能产业研究院任职&#xff0c;加入正在筹备该产业院的原百度总裁张亚勤团队。 对于马维英离职一事&#xff0c;字节跳动也做…

超全深度学习细粒度图像分析:项目、综述、教程一网打尽

在本文中&#xff0c;来自旷视科技、南京大学和早稻田大学的研究者对基于深度学习的细粒度图像分析进行了综述&#xff0c;从细粒度图像识别、检索和生成三个方向展开论述。此外&#xff0c;他们还对该领域未来的发展方向进行了讨论。 &#xff08;CV&#xff09;是用机器来理解…

机器学习防止模型过拟合的方法知识汇总

目录 LP范数L1范数L2范数L1范数和L2范数的区别DropoutBatch Normalization归一化、标准化 & 正则化Reference 其实正则化的本质很简单&#xff0c;就是对某一问题加以先验的限制或约束以达到某种特定目的的一种手段或操作。在算法中使用正则化的目的是防止模型出现过拟合。…

一文读懂机器学习中的正则化

正则化是一种为了减小测试误差的行为(有时候会增加训练误差)。当我们用较为复杂的模型拟合数据时,容易出现过拟合现象,导致模型的泛化能力下降,这时我们就需要使用正则化,降低模型的复杂度。本文总结阐释了正则化的相关知识点,帮助大家更好的理解正则化这一概念。 目录 L…

漆远离职阿里加盟复旦!大牛纷纷回归学界,大厂AI名存实亡?

来源丨新智元 编辑丨小咸鱼 好困 【导读】蚂蚁金服原副总裁、AI团队负责人漆远已于近日离职&#xff0c;出任复旦大学「浩清」教授&#xff0c;复旦人工智能创新与产业研究院院长。将从事深度学习、强化学习等人工智能领域的前沿研究和应用。 那个支付宝背后的AI大牛&#xff0…

正则化方法归纳总结

作者丨Poll 来源丨https://www.cnblogs.com/maybe2030/p/9231231.html 编辑丨极市平台 本文仅用于学术分享,如有侵权请联系后台删文 导读 本文先对正则化的相关概念进行解释作为基础&#xff0c;后对正则化的方法进行了总结&#xff0c;帮助大家更加清晰的了解正则化方法。 阅…

阿里副总裁、达摩院自动驾驶负责人王刚离职!

转载自&#xff1a;新智元 | 编辑&#xff1a;桃子 好困 【导读】从学界「跨界」互联网&#xff0c;再转身去创业。这一年&#xff0c;他40岁&#xff0c;依然选择挑战自我。消息称&#xff0c;阿里副总裁、达摩院自动驾驶实验室负责人王刚已于近日离职。阿里&#xff0c;是他的…

机器学习防止模型过拟合方法总结

转自 | 小白学视觉&#xff0c;作者小白 文章仅用于学术分享&#xff0c;侵删 目录 LP范数L1范数L2范数L1范数和L2范数的区别DropoutBatch Normalization归一化、标准化 & 正则化Reference 其实正则化的本质很简单&#xff0c;就是对某一问题加以先验的限制或约束以达到某种…

CV还要更热闹!旷视刚宣布4.6亿美元融资,商汤:新一轮年内完成

允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI △ 商汤科技CEO徐立 你追我赶&#xff01; 机器视觉&#xff08;CV&#xff09;领域热度还在急剧升温。 昨天&#xff0c;旷视科技(Face)刚完成了C轮4.6亿美元融资&#xff0c;刷新了AI公司全球单轮融资额纪录。 而这一纪录的保…

LaTeX 有哪些「新手须知」的内容?

孟晨 &#xff0c;在 LaTeX 话题下写错 LaTeX 名字的&#xff0c;一律… 陈硕 等 137 人赞同 这是个好问题&#xff0c;虽然提问提得很大。不是很好答&#xff0c;权当抛砖引玉了。 天字第一号原则&#xff1a;不要到网上抄代码&#xff0c;尤其是似懂非懂的阶段。 除非代码的…

《解析深度学习》部分笔记

记录一些书里的知识点&#xff0c;摘自魏秀参的《解析深度学习-卷积神经网络原理与视觉实践》 第三章 卷积神经网络经典结构 1.在深度学习中&#xff0c;深度卷积神经网络呈现“分布式表示”&#xff0c;既“语义概念”到神经元是一个多对多映射。直观讲就是&#xff1a;每个语…

新型计算机离我们还有多远

作者&#xff1a;高如如&#xff0c;魏秀参 本文为《程序员》原创文章&#xff0c;未经允许不得转载&#xff0c;更多精彩文章请订阅《程序员》 自1946年ENIAC&#xff08;Electronic Numerical Integrator And Calculator&#xff0c;即电子数字积分计算机&#xff09;问世&am…

Must Know Tips/tricks in DNN

Must Know Tips/Tricks in Deep Neural Networks (byXiu-Shen Wei) 转载于http://lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html Deep Neural Networks, especially Convolutional Neural Networks (CNN), allows computational models that are composed of mult…

[读书笔录]解析卷机神经网络(魏秀参)——第二章

解析卷积神经网络——基础理论篇 第二章 卷机神经网络基本部件 2.1 “端到端”思想&#xff08;end-to-end manner&#xff09; 深度学习的一个重要思想即”端到端”的学习方式&#xff0c;属于表示学习的一种。整个学习流程并不进行人为的子问题划分&#xff0c;而是完全交…

[读书笔录]解析卷机神经网络(魏秀参)——第三章

#解析卷积神经网络——基础理论篇 第三章 卷机神经网络经典结构 3.1 CNN网络结构中的重要概念 ####感受野 感受野(receptive filed)原指听觉、视觉等神经系统中一些神经元的特性&#xff0c;即神经元只接受其所支配的刺激区域内的信号。 以单层卷积操作为例&#xff0c;如左…

[读书笔录]解析卷积神经网络(魏秀参)——第一章

解析卷积神经网络——基础理论篇 第一章 卷机神经网络基础知识 1.1发展历程 卷积神经网络发展历史中的第一件里程碑事件发生在上世纪60年代左右的神经科学中&#xff0c;1959 年提出猫的初级视皮层中单个神经元的“感受野”概念&#xff0c;紧接着于1962年发现了猫的视觉中枢…