网络爬虫技术jsuop

获取方式:

// 根据ID获得节点

Element elementDiv = doc.getElementById("shop-all-list");

 

//根据<ul>标签名获得节点

Elements elementsUl = elementDiv.getElementsByTag("ul");

 

//获取elementsUl中第一个<li>的标签节点

Elements elements = elementsUl.first().getElementsByTag("li");

 

Elements elements1 = element.children();

 

String targetUrl = elements1.get(0).getElementsByTag("a").attr("href");

 

String img = elements1.get(0).getElementsByTag("img").first().attr("data-src");

 

//判断字符串中是否包含.jpg

if(img.contains(".jpg"))

 

//获得字符串中.jpg第一次出现位置

int a = img.indexOf(".jpg");

 

//字符串截取

img = img.substring(0, a + 4);


===============================

2、参考资料

Jsoup解析有很多种方法能得到同样的结构,就看你想用哪种思路。

有用id定位的,有用TagName获取的有用class 获取的。

 

常用的方法如下:

jsoup提供类似JS获取html元素:

getElementById(Stringid)                          用id获得元素

getElementsByTag(Stringtag)                            用标签获得元素

getElementsByClass(StringclassName) 用class获得元素

getElementsByAttribute(Stringkey)        用属性获得元素

同时还提供下面的方法提供获取兄弟节点:siblingElements(),firstElementSibling(), lastElementSibling();nextElementSibling(),previousElementSibling()

 

 

获得与设置元素的数据:

attr(String key)         获得元素的数据 attr(String key, String value) 设置元素数据

attributes()                获得所以属性

id(),className(),classNames()获得id class得值

text()                           获得文本值

text(String value)     设置文本值

html()                          获取html

html(String value)    设置html

outerHtml()               获得内部html

data()                          获得数据内容

tag()                                      获得tag 和 tagName() 获得tagname

 

操作html元素:

append(String html), prepend(String html)

appendText(String text), prependText(Stringtext)

appendElement(String tagName),prependElement(String tagName)

html(String value)

 

jsoup还提供了类似于JQuery方式的选择器

采用选择器来检索数据

tagname  使用标签名来定位,例如 a

ns|tag      使用命名空间的标签定位,例如 fb:name 来查找 <fb:name> 元素

#id             使用元素 id 定位,例如 #logo

.class        使用元素的 class 属性定位,例如 .head

*                定位所有元素

[attribute]        使用元素的属性进行定位,例如 [href] 表示检索具有 href 属性的所有元素

[^attr]                使用元素的属性名前缀进行定位,例如 [^data-] 用来查找 HTML5 的 dataset 属性

[attr=value]      使用属性值进行定位,例如 [width=500] 定位所有 width 属性值为 500 的元素

[attr^=value],[attr$=value],[attr*=value] 这三个语法分别代表,属性以value 开头、结尾以及包含

[attr~=regex]   使用正则表达式进行属性值的过滤,例如 img[src~=(?i)\.(png|jpe?g)]

以上是最基本的选择器语法,这些语法也可以组合起来使用

 

组合用法:

el#id                   定位id值某个元素,例如 a#logo-> <a id=logo href= … >

el.class     定位 class 为指定值的元素,例如div.head -> <div class=head>xxxx</div>

el[attr]     定位所有定义了某属性的元素,例如 a[href]

以上三个任意组合,例如 a[href]#logo 、a[name].outerlink

 

 

除了一些基本的语法以及这些语法进行组合外,jsoup 还支持使用表达式进行元素过滤选择

:lt(n)    例如 td:lt(3) 表示小于三列

:gt(n)    div p:gt(2) 表示 div 中包含 2 个以上的 p

:eq(n)    form input:eq(1) 表示只包含一个 input 的表单

:has(seletor)     div:has(p) 表示包含了 p 元素的 div

:not(selector)     div:not(.logo) 表示不包含class=logo 元素的所有 div 列表

:contains(text)     包含某文本的元素,不区分大小写,例如p:contains(oschina)

:containsOwn(text)     文本信息完全等于指定条件的过滤

:matches(regex)     使用正则表达式进行文本过滤:div:matches((?i)login)

:matchesOwn(regex)     使用正则表达式找到自身的文本

 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值