Table des matières
下直接或间接有
Maison interface Web tutoriel HTML jsoup:解析HTML用法小结_html/css_WEB-ITnose

jsoup:解析HTML用法小结_html/css_WEB-ITnose

Jun 24, 2016 am 11:42 AM

1.解析方式 

(1)从字符串解析 

String html = "

First parse

Parse HTML into a doc.

";

Document doc = Jsoup.parse(html);

?

(2)从URL获取解析

Document doc = Jsoup.connect("http://example.com/").get();     

String title = doc.title();

Document doc = Jsoup.connect("http://example.com") .data("query", "Java").userAgent("Mozilla").cookie("auth", "token").timeout(3000).post();

?

?

(3)从文件解析

File input = new File("/tmp/input.html"); 

Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");


2.DOM方式遍历元素
(1)搜索元素

getElementById(String id)

getElementByTag(String tag)

getElementByClass(String className)

getElementByAttribute(String key)

siblingElements(), firstElementSibling(), lastElementSibling(), nextElementSibling(), previousElementSibling()

parent(), children(), child(int index)

(2)获取元素数据

attr(String key) ? 获取key属性

attributes() ? 获取属性

id(), className(), classNames()

text() ? 获取文本内容

html() ? 获取元素内部HTML内容

outerHtml() ? 获取包括此元素的HTML内容

data() ? 获取

tag(), tagName()


3.选择器语法(jsoup与其他解析器的区别就是可以使用类似jquery的选择器语法来搜索及过滤出所需的元素)
(1)基本选择器

tagname: 搜索tag标签的元素

ns|tag: 搜索命名空间内tag标签的元素,如fb|name:

#id: 搜索有指定id的元素

.class: 搜索有指定class的元素

[attribute]: 搜索有attrribute属性的元素

[^attri]: 搜索有以attri开头的属性的元素

[attr=value]: 搜索有指定属性及其属性值的元素

[attr^=value], [attr$=value], [attr*=value]: 搜索有指定attr属性,且其属性值是以value开头、结尾或包括value的元素,如[href*=/path/]

[attr~=regex]: 搜索有指定attr属性,且其属性值符合regex正则表达式的元素

*: 搜索所有元素

(2)选择器组合

el#id: 同时指定标签名称和id

el.class: 同时指定标签名称和class

el[attr]: 同时指定标签名称和及其中所含属性的名称

上述3项的任意组合,如a[href].highlight

ancestor child: 包含,如div.content p,即搜索

下含有

标签的元素

ancestor > child: 直接包含,如div.content > p,即搜索直属

节点下的

标签元素;div.content > *,即搜索

下的所有元素

siblingA + siblingB: 直接遍历,如div.head + div,即搜索

的元素,其中不再包含子元素

siblingA ~ siblingX: 遍历,如h1 ~ p,即

下直接或间接有

的元素

el, el, el: 组合多个选择器,搜索满足其中一个选择器的元素

(3)伪选择器(条件选择器)

:lt(n): 搜索n号元素之前的元素

:gt(n): 搜索n号元素之后的元素

:eq(n): 搜索n号元素

:has(seletor): 搜索符合指定选择器的元素

:not(seletor): 搜索不符合指定选择器的元素

:contains(text): 搜索包含指定文本的元素,区分大小写

:containsOwn(text): 搜索直接指包含指定文本的元素

:matches(regex): 搜索符合指定正则表达式的元素

:matchesOwn(regex): 搜索本元素文本中符合指定正则表达式的元素

注意:以上伪选择器的索引中,第一个元素位于索引0,第二个元素位于索引1,……

4.获取元素的属性、文本和HTML

获取元素的属性值:Node.attr(String key)

获取元素的文本,包括与其组合的子元素:Element.text()

获取HTML:Element.html()或Node.outerHtml()

5.操作URL

Element.attr("href") ? 直接获取URL

Element.attr("abs:href")或Element.absUrl("href") ? 获取完整URL。如果HTML是从文件或字符串解析过来的,需要调用Jsoup.setBaseUri(String baseUri)来指定基URL,否则获取的完整URL只会是空字符串

6.测试例子

li[class=info] a[class=Author] - 空格前后表示包含关系,即表示li里的a

div[class=mod mod-main mod-lmain]:contains(教学反思) - div中包含"教学反思",适合同时有多个同名DIV的情况

/*

  previousSibling()获取某标签前面的代码

  nextSibling()获取某标签后的代码

  如:

  

  第一名:Lily 

  第二名:Tom  

  第三名:Peter

  

*/

Elements items = doc.select("form[id=form1]");

Elements prevs = items.select("br");

for(Element p : prevs){

   String prevStr = p.previousSibling().toString().trim());

}

/*

 最常用的链接抓取

*/

String itemTag = "div[class=mydiv]";

String linkTag = "a"

Elements items = doc.select(itemTag);

Elements links = items.select(linkTag);

for(Element l : links){

  String href = l.attr("abs:href");//完整Href

  String absHref = l.attr("href");//相对路径

  String text = l.text();

  String title = l.attr("title");

}

7.jsoup在线API 
http://jsoup.org/apidocs/  


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Difficulté à mettre à jour la mise en cache des pages Web officielles du compte: comment éviter l'ancien cache affectant l'expérience utilisateur après la mise à jour de la version? Difficulté à mettre à jour la mise en cache des pages Web officielles du compte: comment éviter l'ancien cache affectant l'expérience utilisateur après la mise à jour de la version? Mar 04, 2025 pm 12:32 PM

Le cache de mise à jour de la page Web du compte officiel, cette chose est simple et simple, et elle est suffisamment compliquée pour en boire un pot. Vous avez travaillé dur pour mettre à jour l'article officiel du compte, mais l'utilisateur a toujours ouvert l'ancienne version. Dans cet article, jetons un coup d'œil aux rebondissements derrière cela et comment résoudre ce problème gracieusement. Après l'avoir lu, vous pouvez facilement faire face à divers problèmes de mise en cache, permettant à vos utilisateurs de toujours ressentir le contenu le plus frais. Parlons d'abord des bases. Pour le dire franchement, afin d'améliorer la vitesse d'accès, le navigateur ou le serveur stocke des ressources statiques (telles que des images, CSS, JS) ou du contenu de la page. La prochaine fois que vous y accédez, vous pouvez le récupérer directement à partir du cache sans avoir à le télécharger à nouveau, et il est naturellement rapide. Mais cette chose est aussi une épée à double tranchant. La nouvelle version est en ligne,

Comment ajouter efficacement les effets de course aux images PNG sur les pages Web? Comment ajouter efficacement les effets de course aux images PNG sur les pages Web? Mar 04, 2025 pm 02:39 PM

Cet article démontre un ajout de bordure PNG efficace aux pages Web à l'aide de CSS. Il soutient que CSS offre des performances supérieures par rapport à JavaScript ou à des bibliothèques, détaillant comment ajuster la largeur, le style et la couleur des bordures pour un effet subtil ou proéminent

Comment utiliser les attributs de validation du formulaire HTML5 pour valider l'entrée utilisateur? Comment utiliser les attributs de validation du formulaire HTML5 pour valider l'entrée utilisateur? Mar 17, 2025 pm 12:27 PM

L'article discute de l'utilisation des attributs de validation de formulaire HTML5 comme les limites requises, motifs, min, max et longueurs pour valider la saisie de l'utilisateur directement dans le navigateur.

Quel est le but du & lt; datalist & gt; élément? Quel est le but du & lt; datalist & gt; élément? Mar 21, 2025 pm 12:33 PM

L'article traite du HTML & lt; Datalist & GT; élément, qui améliore les formulaires en fournissant des suggestions de saisie semi-automatique, en améliorant l'expérience utilisateur et en réduisant les erreurs. COMMANDE COMPRES: 159

Quelles sont les meilleures pratiques pour la compatibilité entre les navigateurs dans HTML5? Quelles sont les meilleures pratiques pour la compatibilité entre les navigateurs dans HTML5? Mar 17, 2025 pm 12:20 PM

L'article examine les meilleures pratiques pour assurer la compatibilité des navigateurs de HTML5, en se concentrant sur la détection des fonctionnalités, l'amélioration progressive et les méthodes de test.

Quel est le but du & lt; mètre & gt; élément? Quel est le but du & lt; mètre & gt; élément? Mar 21, 2025 pm 12:35 PM

L'article traite du HTML & lt; mètre & gt; élément, utilisé pour afficher des valeurs scalaires ou fractionnaires dans une plage, et ses applications courantes dans le développement Web. Il différencie & lt; mètre & gt; De & lt; Progress & gt; et ex

Quel est le but du & lt; Progress & gt; élément? Quel est le but du & lt; Progress & gt; élément? Mar 21, 2025 pm 12:34 PM

L'article traite du HTML & lt; Progress & GT; élément, son but, son style et ses différences par rapport au & lt; mètre & gt; élément. L'objectif principal est de l'utiliser & lt; Progress & gt; pour l'achèvement des tâches et & lt; mètre & gt; pour stati

Comment utiliser le html5 & lt; time & gt; élément pour représenter les dates et les temps sémantiquement? Comment utiliser le html5 & lt; time & gt; élément pour représenter les dates et les temps sémantiquement? Mar 12, 2025 pm 04:05 PM

Cet article explique le html5 & lt; time & gt; élément de représentation sémantique de date / heure. Il souligne l'importance de l'attribut DateTime pour la lisibilité à la machine (format ISO 8601) à côté du texte lisible par l'homme, stimulant AccessIbilit

See all articles