❶ jsoup 能否加载异步的数据 加载的url 中含有异步的 展现的数据,怎么用jsoup 获得
其实jsoup用来解析比较好,获取html内容,还是用httpclient好一些
❷ jsoup 的使用
获取所有双色球数据,但是返回的都是html页面,需要进行处理,最开始想着用dom4j处理核脊,发现不可行。之后想着自己处猛没理,但是又太麻烦了,然后找到了jsoup,使用起来非常简单。
操枝氏纳作、解析HTML格式的数据
jsoup的使用和dom4j非常类似,最开始都是先获得一个Document对象,然后获取需要的子元素或节点进行操作,但是jsoup可以通过dom、css、和类似jquery的方法( 选择器 )来获取需要的数据。
选择器官方API
其他方法详见官方API
Node
Element
Elements
Whitelist官方API
❸ 使用jsoup抓取分页的问题
觉得吧~如来果你想抓取网页分自页信息可以使用第三方工具进行抓取,但是问题就来了,加入你是要自己程序实现的话,这样就很麻烦。所以建议自己实现比较好。因为分页内容,每一页都有一个特定的链接,而且很相似,就只有那个指定页数的参数不同而已。所以你可以先用遍历方式将每个网页抓取后解析,然后再存起来,这样比较实际点。
但是我建议你可以在客户端也使用分页模式,这样的话,根据需求去获取,就不会一下子请求的数据量太大。
❹ java jsoup怎样爬取特定网页内的数据
1、Jsoup简述
Java中支持的爬虫框架有很多,比如WebMagic、Spider、Jsoup等。
Jsoup拥有十分方便的api来处理html文档,比如参考了DOM对象的文档遍历方法,参考了CSS选择器的用法等等,因此我们可以使用Jsoup快速地掌握爬取页面数据的技巧。
2、快速开始
1)分析HTML页面,明确哪些数据是需要抓取的
2)使用HttpClient读取HTML页面
HttpClient是一个处理Http协议数据的工具,使用它可以将HTML页面作为输入流读进java程序中.
3)使用Jsoup解析html字符串
通过引入Jsoup工具,直接调用parse方法来解析一个描述html页面内容的字符串来获得一个Document对象。该Document对象以操作DOM树的方式来获得html页面上指定的内容。
3、保存爬取的页面数据
1)保存普通数据到数据库中
将爬取的数据封装进实体Bean中,并存到数据库内。
2)保存图片到服务器上
直接通过下载图片的方式将图片保存到服务器本地。
❺ xml标签的正确使用
最近一直在学习xml相关的知识,为了知识的积累以及方便以后查阅,写了这篇关于xml的文章,同时也为正在学习xml标签的网友或者对xml知识感兴趣的,这篇文章不容错过。
首先我们需要了解的是xml是什么,它能做什么事情以及如何去学习它
xml全称 Extensiable markup language. 译为可扩展标记语言 可扩展也就是标签可以自定义
这也是和html的区别之一
在讲解xml知识之前我们先来做下对比xml与html到底有哪些区别
1.xml标签是自定义的,html标签是预定义
2.xml语法严格,html语法松散
3.xml存储数据,html展示数据
在软件开发中,我们可以使用xml来存储数据
储存方式有两种
1.存储文件
2.网络中传输
基本语法
1.xml文档的后缀名,.xml
2.xml的第一行必须定义文档申明 <?xml version=‘1.0’?>文档申明
3.xml文档有且仅有一个根标签
4.属性值必须用引号引起来’’或唯激“”
5.标签指返袜必须正确关闭
6.xml标签名称区分大小写
1.格式<?xml属性列表?>
属性列表:
version:版本号
encoding:编码方式 告知解析引擎 当前文档使用的字符集 默认值ISO-8859-1
standalone :是否独立
取值:yes:不依赖其他文件 no:依赖其他文件
结合css来控制标签的样式<?xml-stylesheet type=“text/css” href=“xxx”?>
1.规则:
* 名称可以含字母、数字以及其他的字符
* 名称不能以数字或者标点符世拦号开始
* 名称不能以字符 “xml”(或者 XML、Xml)开始
* 名称不能包含空格
id属性值唯一
cdata区格式:在该区域中的数据会被原样展示
格式<![CDATA[{
首先我们先来看下约束的解析图
作为框架的使用者(程序员)
1.能够在xml中引入约束文档
2.能够简单的读懂约束文档
DTD技术
Schema:一种比较复杂的约束
DTD:
引入dtd文档到xml文档中
内部的dtd:将约束规则定义在xml文档中
一种是外部的dtd:将约束的规则定义在外部的dtd文件中
1.本地:<!DOCTYPE 根标签名 SYSTEM “dtd文件的位置”>
2.网络:<!DOCTYPE 根标签名 PUBLIC “dtd文件名字” “dtd文件的位置URL”>
操作xml文档
1.解析(读取):将文档中的数据读取到内存中,
2.写入:将内存中的数据保存到xml文档中,持久化的存储
1.DOM:将标记语言文档一次性加载到内存,在内存中形成一颗DOM树
优点:操作方便,可以对文档进行CRUD的所有操作
缺点:占内存
2.SAX:逐行读取,基于事件驱动的
优点:不占内存
缺点:只能读取,不能增删改
xml常见的解析器:
1.JASP:sun公司提供的解析器 支持dom和sax思想
2.DOM4J:一款非常优秀的解析器
3.jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据
4:PULL:android操作系统内置的解析器
快速入门:
步骤:
1.导入相关的jar包
2.获取document对象
3.获取对应的标签Element对象
4.获取数据
这里我以jsoup为例
对象的使用
1.jsoup:工具类,可以解析html或xml文档,返回document
parse:解析html或xml文档,返回document
parse(File in,String charset);解析html或xml文档的
parse(String html)解析html或xml字符串
parse(Url url, int timeoutMills)通过网络路径获取指定的html或xml的文档对象
2.Document:文档对象,代表文档中的dom树 获取Elements对象
getElementById(String id),根据id属性值获取唯一的element对象
getElementsByTag(String tagName)根据标签名称获取元素对象集合
getElementsByAttribute(String key) 根据属性名称获取元素对象集合
getElementsByAttributeValue(String key,String value)根据对应的属性名和属性值获取元素对象集合
3.Elements:元素Element对象的集合,可以当作ArrayList<Element> 来使用
4.Element:元素对象
1.获取到它的子元素对象
5.Mode:节点对象
是document和element的父类
快速查询方式:
1.selector选择器
使用方法:Elements select(String cssQuery)
语法:参考Selector类中定义的语法
2.xpath: XPath 即为 XML 路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
语法
// 查询所有元素1标签
//元素1/元素2。查询所有元素1中的所有元素2
带有id属性的标签
//元素1/元素2[@id]
带有id属性值的标签元素1/元素2[@id=‘属性值’]
使用Jsoup的Xpath需要额外的导入jar包
查询w3c参考手册,使用xpath的语法完成
❻ jsoup在怎么获取特定的子节点
使用Jsoup解析html中的指定数据,十分方便。Jsoup工具十分强大,十分好用。但网上似乎没有很好的例子,本文的目的即在于此。建议仔细阅读代码中的几个例子,Jsoup解析数据不外乎这几种类型。
第一步:将Jsoup JAR包导入项目
第二步:使用Jsoup API
1, 定位
通过div的属性值,定位到html的div(块),即所需要内容对应的块。
示例代码如下:
<div class="content">
2, 筛选数据
a, 通过标签头,在div中继续筛选数据。可能会找到很多的数据,这里会用到循环。见eg1。
//eg1:解析网络音乐 Document doc = Jsoup.connect("http://list.mp3..com/top/singer/A.html").get(); Element singerListDiv = doc.getElementsByAttributeValue("class", "content").first(); Elements links = singerListDiv.getElementsByTag("a"); for (Element link: links) {
❼ 利用Jsoup获取具体标签属性值
doc.select("meta[name=description]"),来get(0).attr("content")
大致是这么自写的,你可以研究一下JSOUP的选择器,
chenying99/archive/2013/01/04/2844615,html" target="_blank">http://www.cnblogs.com/chenying99/archive/2013/01/04/2844615.html
❽ jsoup教程
jsoup是一款Java的HTML解析器,主要用来对HTML解析。 官网 中文文档
在爬虫的时候,当我们用HttpClient之类的框架,获取到网页源码之后,需要从网页源码中取出我们想要的内容,
就可以使用jsoup这类HTML解析器了。可以非常轻松的实现。
虽然jsoup也支持从某个地址直接去爬取网页源码,但是只支持HTTP,HTTPS协议,支持不够丰富。
所以,主要还是用来对HTML进行解析。
◆其中,要被解析的HTML可以是一个HTML的字符串,可以是一个URL,可以禅困是一个文件。
org.jsoup.Jsoup把输入的HTML转换成一个org.jsoup.nodes.Document对象,然后从Document对象中取出想要的元素。
org.jsoup.nodes.Document继承了org.jsoup.nodes.Element,Element又继承了org.jsoup.nodes.Node类。里面提供了丰富的方法来获取HTML的元素。
◇从URL获取HTML来解析
其中Jsoup.connect("xxx")方法返回一个org.jsoup.Connection对象。
在Connection对象中,我们可以执行get或者post来执行请求。但是在执行请求之前,
我们可以使用Connection对象来设置一些请求信息。比如:头信息,cookie,请求等待时间,代理等等来模拟浏览器的行为。
◆获得Document对象后,接下来就是解析Document对象,并从中获取我们想要的元素了。
Document中提供了丰富的方法来获取指定元素。
◇使用DOM的方式来取得
getElementById(String id):通过id来获取
getElementsByTag(String tagName):通过标签名字来获取
getElementsByClass(String className):通过类名来获取
getElementsByAttribute(String key):通过属性名字来获取
getElementsByAttributeValue(String key, String value):通过指定的属性名字,属性值来获取
getAllElements():获取所有元素
◇通过类似于css或jQuery的选择器来查找元素
使用的是Element类的下记方法:
public Elements select(String cssQuery)
通过传入一个类似于CSS或jQuery的选择器字符串,来查找指定元素。
例子:
选择器的更多语法(可以在org.jsoup.select.Selector中查看到更多关于选择器的语法):
tagname: 通过标签查找元素,比如:a
ns|tag: 通过标签在命名空间查找元素,比如:可以用 fb|name 语法码桐来查找 <fb:name> 元素
#id: 通过ID查找元素,比如:#logo
.class: 通过class名称查迟袭坦找元素,比如:.masthead
[attribute]: 利用属性查找元素,比如:[href]
[^attr]: 利用属性名前缀来查找元素,比如:可以用[^data-] 来查找带有HTML5 Dataset属性的元素
[attr=value]: 利用属性值来查找元素,比如:[width=500]
[attr^=value], [attr$=value], [attr=value]: 利用匹配属性值开头、结尾或包含属性值来查找元素,比如:[href=/path/]
[attr~=regex]: 利用属性值匹配正则表达式来查找元素,比如: img[src~=(?i).(png|jpe?g)]
*: 这个符号将匹配所有元素
Selector选择器组合使用
el#id: 元素+ID,比如: div#logo
el.class: 元素+class,比如: div.masthead
el[attr]: 元素+class,比如: a[href]
任意组合,比如:a[href].highlight
ancestor child: 查找某个元素下子元素,比如:可以用.body p 查找在"body"元素下的所有 p元素
parent > child: 查找某个父元素下的直接子元素,比如:可以用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
伪选择器selectors
:lt(n): 查找哪些元素的同级索引值(它的位置在DOM树中是相对于它的父节点)小于n,比如:td:lt(3) 表示小于三列的元素
:gt(n):查找哪些元素的同级索引值大于n,比如: div p:gt(2)表示哪些div中有包含2个以上的p元素
:eq(n): 查找哪些元素的同级索引值与n相等,比如:form input:eq(1)表示包含一个input标签的Form元素
:has(seletor): 查找匹配选择器包含元素的元素,比如:div:has(p)表示哪些div包含了p元素
:not(selector): 查找与选择器不匹配的元素,比如: div:not(.logo) 表示不包含 class="logo" 元素的所有 div 列表
:contains(text): 查找包含给定文本的元素,搜索不区分大不写,比如: p:contains(jsoup)
:containsOwn(text): 查找直接包含给定文本的元素
:matches(regex): 查找哪些元素的文本匹配指定的正则表达式,比如:div:matches((?i)login)
:matchesOwn(regex): 查找自身包含文本匹配指定正则表达式的元素
注意:上述伪选择器索引是从0开始的,也就是说第一个元素索引值为0,第二个元素index为1等
◆通过上面的选择器,我们可以取得一个Elements对象,它继承了ArrayList对象,里面放的全是Element对象。
接下来我们要做的就是从Element对象中,取出我们真正需要的内容。
通常有下面几种方法:
◇Element.text()
这个方法用来取得一个元素中的文本。
◇Element.html()或Node.outerHtml()
这个方法用来取得一个元素中的html内容
◇Node.attr(String key)
获得一个属性的值,例如取得超链接<a href="">中href的值
json字符串-数组类型与JSONArray之间的转换
复杂json格式字符串与JSONObject之间的转换
❾ 拉普达日记APP
首先做个app的架子,然后把拉普达的网址放进去,就行了……应该是这样额。
后来发现没那么简单,写了一些东西,能更换头像了。搭简
举个栗子,假如我在这个正文的输入框内写东西,不小心点了返回键,返回到上一个页面,在点回来的时候,日记就没了,或者,我写东西,切出浏览器,接电话玩游戏去了,回来的时候发现浏览器重启也没了。
所以考虑到这两种情况,我做了一些处理,在没提交日记,返回上一页或者切出的时候,进行了日记暂时保存,注意只能保存你最余枝渗近输入的一次的东西。
草稿功能就在首页一个悬浮的按钮,大家安装了就能看得到了,点进去是一个页面,右上角能快捷复制,也可以长按文字复制。
这是首页的草稿功能就是那个小黑圈:
这是草稿功能页面:
首先要拿到正文这个textarea控件里输入的内容,我是绝对改不了影响不到网页里的东西的,只能取,
然后网络,怎么取到webview里面textarea的值,然后找了一个,发现确实可以,已经能取到特定id的控件的值了,然后呢,什么时候取这种值呢,当然是在返回上一页的时候,或者在后台运行的时候也取一下,保存。
这样就可以了。
然后就是在首页加个草稿按钮入口,新写一个草稿页面,我还特意写了一个和拉普达差不多的标题栏,下面的内容是一个TextView控件,取保存的那个值,如果不为空就显示草稿,为空就显示暂无草稿。
复制功能的话,就是把值黏贴到系统粘贴板上就行了。
对了,草稿那个页面是可以侧滑返回的哦,也可以点击左上角的logo返回。
使用jsoup获取日记详情里面标签里的内容,拿到标题,还有日记链接,然后竖脊保存到本地,就可以实现了。
只保留草稿功能 拉普达日记.apk 密码:9dbh