日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSOUP 教程—— Java爬虫,简易入门,秒杀htmlparser

發(fā)布時間:2023/12/3 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSOUP 教程—— Java爬虫,简易入门,秒杀htmlparser 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載自?JSOUP 教程—— Java爬蟲,簡易入門,秒殺htmlparser

關(guān)于爬蟲,之前一直用做第一個站的時候,記得那時候?qū)懙?爬蟲??是爬sina?的數(shù)據(jù),用的就是?htmlparser??可能是由于好奇和滿足我當(dāng)時的需求,那開始就各種寫啊,一個頁面,把需要的內(nèi)容處理下來,復(fù)雜的寫完后不寫注釋自己都看不懂,一直我也知道?JSOUP??好,也感覺沒空學(xué)習(xí)新的?爬蟲??(完全是借口啊)。最近我試了一下用?JSOUP??,尼瑪,完全愛上了,完全秒殺?htmlparser??。

PS:用過都知道JSOUP?是支持css select?(CSS選擇器),對于我這樣的?jQuery??用的非常6666的人來說,哪就是一個字,爽死了。

Maven??依賴包:

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.9.2</version> </dependency>


下面展示的代碼是,實現(xiàn)了相同的一個業(yè)務(wù),爬取了百度的一些內(nèi)容。但是你可以看到,Htmlparser繁瑣,JSOUP輕量級。不多說下面看代碼。

Htmlparser Java代碼:

String url = "http://www.baidu.com/s?wd=site:(www.zybang.com)&rn=50"; /**開始爬取*/ Parser parser = new Parser(url); //設(shè)置字符集 parser.setEncoding("utf-8"); //創(chuàng)建一個filter NodeFilter contentFilter = new AndFilter(new TagNameFilter("div"), new HasAttributeFilter("id","content_left")); //通過Filter過濾 NodeList contents = parser.parse(contentFilter); //再創(chuàng)建Filter,用途通過父類去過濾子類 NodeFilter divsFilter = new AndFilter(new TagNameFilter("div"), new HasAttributeFilter("data-tools")); NodeList divs = contents.extractAllNodesThatMatch(divsFilter,true); //取值 for (int i = 0; i < divs.size(); i++) {Div div = (Div) divs.elementAt(i);String json = div.getAttribute("data-tools");if(StringUtils.isNotBlank(json) && json.trim().startsWith("{")){//獲取到j(luò)sonJSONObject jsonObj = JSONObject.fromObject(json.trim());//獲取urlString durl = jsonObj.getString("url");//內(nèi)容url//do something} } 相同業(yè)務(wù)之后改成 JSOUP Java代碼: String url = "http://www.baidu.com/s?wd=site:(www.zybang.com)&rn=50"; Document doc = Jsoup.connect(url).get(); Elements divs = doc.select("div#content_left div[data-tools]"); for (Element element : divs) {String json = element.attr("data-tools");if(StringUtils.isNotBlank(json) && json.trim().startsWith("{")){//獲取到j(luò)sonJSONObject jsonObj = JSONObject.fromObject(json.trim());//獲取urlString durl = jsonObj.getString("url");//內(nèi)容url//do something} }
JSOUP??創(chuàng)建一個模擬瀏覽器行為的請求頭:

瞬間你看看,邏輯思維都符合現(xiàn)在流行的鏈?zhǔn)骄幊獭?/p> Document doc = Jsoup.connect(url).header("Accept", "*/*").header("Accept-Encoding", "gzip, deflate").header("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3").header("Referer", "https://www.baidu.com/").header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0").timeout(5000).get();

然后就開啟jQuery模式了。

//獲取id = 1 的元素的文本值。 doc.select("#1").text(); //獲取id = 1 的元素的HTML值。 doc.select("#1").html(); //獲取id =1 直接子類class='css1' , 然后所有子類的含有class = css2 的集合 doc.select("#id > .css1 .css2"); .....

后面我會采用視頻講解的方式,結(jié)合實戰(zhàn)去講解。等著吧,我現(xiàn)在在整理?FreeMarker??的視頻!




總結(jié)

以上是生活随笔為你收集整理的JSOUP 教程—— Java爬虫,简易入门,秒杀htmlparser的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。