jsoup遍历,jsoup的功能
1、使用数字正射影像图方法来遍历一个文档问题你有一个超文本标记语言文档要从中提取数据,并了解这个超文本标记语言文档的结构。
方法将超文本标记语言解析成一个文件之后,就可以使用类似于数字正射影像图的方法进行操作。示例代码:
文件输入=新文件(/tmp/input。html’);
文档doc=Jsoup.parse(输入,‘UTF-8’,‘http://’的例子。com/);
元素内容=文档。getelementbyid(“content”);
元素链接=内容。getelementsbytag( a );
对于(元素链接:链接){
字符串链接href=link。attr( href );
string linkText=link。text();
}
说明元素这个对象提供了一系列类似于数字正射影像图的方法来查找元素,抽取并处理其中的数据。具体如下:
查找元素getElementById(字符串id)getElementsByTag(字符串标记)getElementsByClass(字符串类名)getElementsByAttribute(字符串键)(及相关方法)元素同级:siblingElements()、firstElementSibling()、lastelementsbling();nextElementSibling(),previousElementSibling()Graph:parent(),children(),child(int index)元素数据字符串密钥获取属性属性(字符串关键字,字符串值)设置属性属性()获取所有属性id(),类名()和类名()文本()获取文本内容文本(字符串值)设置文本内容html()获取元素内HTML html(字符串值)设置元素内的超文本标记语言内容outerHtml()获取元素外超文本标记语言内容数据()获取数据内容(例如:脚本和风格标签)标记()和标记名()操作超文本标记语言和文本追加(字符串html)、前置(字符串html) appendText(字符串文本),前置文本(字符串文本)appendElement(字符串标记名),前置元素(字符串标记名)html(字符串值)
2、使用选择器语法来查找元素问题你想使用类似于半铸钢钢性铸铁(铸造半钢)或框架的语法来查找和操作元素。
方法可以使用Element.select(字符串选择器)和Elements.select(字符串选择器)方法实现:
文件输入=新文件(/tmp/input。html’);
文档doc=Jsoup.parse(输入,‘UTF-8’,‘http://’的例子。com/);
元素链接=文档。select( a[href]);//带有超链接属性的a元素
元素pngs=doc。select( img[src $=.png]);
//扩展名为100 . png的图片
元素报头=doc。选择( div。报头’).first();
//类等于桅顶的差异标签
元素结果链接=doc。选择( H3。r a’);//在h3元素之后的a元素
说明j组元素对象支持类似于CSS(或jquery)的选择器语法,来实现非常强大和灵活的查找功能。
这个选择方法在文档,元素,或元素对象中都可以使用。且是上下文相关的,因此可实现指定元素的过滤,或者链式选择访问。
挑选方法将返回一个元素集合,并提供一组方法来抽取和处理结果。
选择器选择器概述标记名:按标记查找元素,例如:a nstag:按标记查找命名空间中的元素,例如:可以使用fbname语法查找fb:name元素#ID:按ID查找元素,例如:#logo。class:通过类名查找元素,比如:mashead[attribute]:按属性查找元素,如:[href] [attr]:按属性名前缀查找元素,例如可以用[data-]查找HTML5 Dataset属性为[attr=value]的元素:用属性值查找元素,如[width=500] [attr=value],[attr $=value],[attr*=value]:通过匹配开头、结尾或包含的属性值查找元素,如:[href*=/path/] [attr~=regex]:查找元素按我)\。(pngjpe?G)] *:该符号将匹配所有元素选择器。选择器组合使用el#id: element ID,比如:div#logo el.class: element class,比如:div . masthead El[attr]:element class,比如:a[href]的任意组合,比如:a[href]。突出祖先子元素:查找某个元素下的子元素,例如:可以使用。body p查找 body 元素父元素下的所有P元素:查找某个父元素下的直接子元素,比如可以用div.content p查找P元素,也可以用body *查找body标签下的所有直接子元素siblingA siblingB:查找A元素前的第一个兄弟元素B,比如:div.head div siblingA ~ siblingX:查找元素A前的兄弟X元素, 例如:h1 ~ p el,el,el:组合多个选择器寻找匹配任意选择器的唯一元素,例如:div.masthead,Div.logo伪选择器:lt(n):找出哪些元素的兄弟索引值(其位置相对于其在DOM树中的父节点)小于n,例如:td:lt(3)表示少于三列的元素:gt(n):找出哪些元素的兄弟索引值大于n, 例如:div p:gt(2)表示哪个div包含超过2 p个元素:eq(n):找出哪些元素的索引值与n相同,例如:Form input:eq(1)表示包含输入标签的Form元素:has(selector):找到与选择器包含的元素匹配的元素,例如:div:has(p)表示哪个div包含p个元素:not(selector):找到与选择器不匹配的元素,例如:div:not(。 logo)表示所有不包含元素的div列表:contains(text):查找包含给定文本的元素。搜索不区分大小写,例如:p:contains(jsoup):contains own(text):查找直接包含给定文本的元素:matches(regex):查找哪些元素的文本匹配指定的正则表达式,例如:div:matches(?I)log in):match showed(regex):查找文本与指定正则表达式匹配的元素。注意:以上伪选择器索引从0开始,即第一个元素索引值为0,第二个元素索引为1,以此类推。您可以查看选择器API参考以了解更多详细信息。
3.从元素、文本和HTML问题中提取属性。在解析获得一个文档实例对象并找到一些元素后,您希望获得这些元素中的数据。
方法来获取属性值,可以使用Node.attr(String key)方法。对于元素中的文本,可以使用Element.text()方法。对于元素或属性中的HTML内容,可以使用Element.html()方法或Node.outerHtml()方法。示例:
string html= p a href= http://example . com/ b示例/b /a链接。/p
文档doc=jsoup . parse(html);//解析HTML字符串以返回文档实现
Element link=doc.select(a )。first();//查找第一个A元素
String text=doc.body()。text();//一个示例链接//获取字符串中的文本
string link href=link . attr( href );// 3358 example . com///获取链接地址
string linkText=link . text();//示例 //获取链接地址中的文本
string link outerh=link . outer html();
// a href=http://example.com b示例/b /a
string linkInnerH=link . html();// b示例/b //获取链接中的html内容
说明上述方法是元素数据访问的核心方法。此外,还可以使用其他一些方法:
element . id()element . tagname()element . class name()和element . has class(string class name)这些访问器方法都有相应的setter方法来改变数据。
4.处理URL。您有一个包含相对URL的HTML文档,您需要将这些相对路径转换为具有绝对路径的URL。
方法在解析文档时,确保指定了基URI,然后使用abs: attribute前缀获取包含基URI的绝对路径。代码如下:document doc=jsoup . connect( 3358 www . open-open . com )。get();
Element link=doc.select(a )。first();
string rel href=link . attr( href );//==/
string absHref=link . attr( ABS:href );// 3358 www.open-open.com/Explain认为,URL通常被写成HTML元素中文档位置相对路径:a href=/download ./a .使用Node.attr(String key)方法获取A元素的href属性时,会直接返回HTML源代码中指定的值。
如果需要获得绝对路径,需要在属性名前面加上abs:这样就可以返回包含根路径的URL地址attr(abs:href )。
因此,在解析HTML文档时,定义基本URI非常重要。
如果不想使用abs:前缀,还有一种方法可以实现同样的功能Node.absUrl(String key)。
参考链接:
官网的Jsoup教程(英文)
Jsoup中文课程
版权归作者所有:原创作品来自的博主wx63356ea22bc56,转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。