❶ 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