優酷電視劇爬蟲代碼實現一:下載解析視頻網站頁面(3)補充知識點:htmlcleaner使用案例...

htmlcleaner 下載地址:htmlcleaner2_1.jar?源碼下載:htmlcleaner2_1-all.zip

寫一個測試用的html文件:html-clean-demo.html

  1. <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd?"?>???
  2. <?html???xmlns?=?"http://www.w3.org/1999/xhtml?"???xml:lang?=?"zh-CN"???dir?=?"ltr"?>??
  3. <?head?>???
  4. ????<?meta???http-equiv?=?"Content-Type"???content?=?"text/html;?charset=GBK"?/>???
  5. ????<?meta???http-equiv?=?"Content-Language"???content?=?"zh-CN"?/>???
  6. ????<?title?>?html?clean?demo?</?title?>???
  7. </?head?>???
  8. <?body?>???
  9. <?div???class?=?"d_1"?>???
  10. ????<?ul?>???
  11. ????????<?li?>?bar?</?li?>???
  12. ????????<?li?>?foo?</?li?>???
  13. ????????<?li?>?gzz?</?li?>???
  14. ????</?ul?>???
  15. </?div?>???
  16. <?div?>???
  17. ????<?ul?>???
  18. ????????<?li?>?<?a???name?=?"my_href"???href?=?"1.html"?>?text-1?</?a?>?</?li?>???
  19. ????????<?li?>?<?a???name?=?"my_href"???href?=?"2.html"?>?text-2?</?a?>?</?li?>???
  20. ????????<?li?>?<?a???name?=?"my_href"???href?=?"3.html"?>?text-3?</?a?>?</?li?>???
  21. ????????<?li?>?<?a???name?=?"my_href"???href?=?"4.html"?>?text-4?</?a?>?</?li?>???
  22. ????</?ul?>???
  23. </?div?>???
  24. </?body?>???
  25. </?html?>???

模擬需求:取出title,name="my_href" 的鏈接,div的class="d_1"下的所有li內容。下面用htmlcleaner寫代碼,HtmlCleanerDemo.java

  1. package??com.chenlb;??
  2. ??
  3. import??java.io.File;??
  4. ??
  5. import??org.htmlcleaner.HtmlCleaner;??
  6. import??org.htmlcleaner.TagNode;??
  7. ??
  8. /**??
  9. ?*?htmlcleaner?使用示例.??
  10. ?*??
  11. ?*?@author?chenlb?2008-11-26?下午02:12:02??
  12. ?*/???
  13. public???class??HtmlCleanerDemo?{??
  14. ??
  15. ????public???static???void??main(String[]?args)??throws??Exception?{??
  16. ????????HtmlCleaner?cleaner?=?new??HtmlCleaner();??
  17. ??
  18. ????????TagNode?node?=?cleaner.clean(new??File(?"html/html-clean-demo.html"?),??"GBK");??
  19. ????????//按tag取.???
  20. ????????Object[]?ns?=?node.getElementsByName("title"?,??true?);?????//標題???
  21. ??
  22. ????????if?(ns.length?>??0?)?{??
  23. ????????????System.out.println("title="?+((TagNode)ns[?0?]).getText());??
  24. ????????}??
  25. ????????System.out.println("ul/li:"?);??
  26. ????????//按xpath取???
  27. ????????ns?=?node.evaluateXPath("//div[@class='d_1']//li"?);??
  28. ????????for?(Object?on?:?ns)?{??
  29. ????????????TagNode?n?=?(TagNode)?on;??
  30. ????????????System.out.println("\ttext="?+n.getText());??
  31. ????????}??
  32. ????????System.out.println("a:"?);??
  33. ????????//按屬性值取???
  34. ????????ns?=?node.getElementsByAttValue("name"?,??"my_href"?,??true?,??true?);??
  35. ????????for?(Object?on?:?ns)?{??
  36. ????????????TagNode?n?=?(TagNode)?on;??
  37. ????????????System.out.println("\thref="?+n.getAttributeByName(?"href"?)+?",?text="?+n.getText());??
  38. ????????}??
  39. ????}??
  40. }??

cleaner.clean()中的參數,可以是文件,可以是url,可以是字符串內容。個人認為:比較常用的應該是evaluateXPath、 getElementsByAttValue、getElementsByName方法了。另外說明下,htmlcleaner 對不規范的html兼容性比較好。

?

轉載于:https://www.cnblogs.com/lchzls/p/6282704.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253567.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小程序開發-利用canvas實現保存二維碼海報到本機

場景及需求 在小程序開發過程中&#xff0c;經常需要實現保存某個頁面為帶小程序碼的二維碼海報圖片到本地&#xff0c;然后用于分享或者發朋友圈等操作。 主要技術點及小程序相關api 技術注意事項 小程序的canvas與H5 canvas使用api大部分一致&#xff0c;但由于小程序中沒有D…

Docker系統六:Docker網絡管理

Docker網絡 I. Docer的通信方式 默認情況下&#xff0c;Docker使用網橋&#xff08;brige&#xff09; NAT的通信模型. Docker啟動時會自動創建網橋Docker0&#xff0c;并配置ip 172.17.0.1/16 ifconfig docker0 docker0 Link encap:Ethernet HWaddr 02:42:e0:31:ac:10inet …

pthread_cond_wait

1. 首先pthread_cond_wait 的定義是這樣的 The pthread_cond_wait() andpthread_cond_timedwait() functions are used to block on a condition variable. They are called withmutex locked by the calling thread or undefined behaviour will result. These functions ato…

HDU 1525 Euclid's Game

題目大意&#xff1a; 題目給出了兩個正數a.b 每次操作&#xff0c;大的數減掉小的數的整數倍。一個數變為0 的時候結束。 誰先先把其中一個數減為0的獲勝。問誰可以贏。Stan是先手。 題目思路&#xff1a; 無論a,b的值為多少&#xff0c;局面&#xff1a;[a%b&#xff0c;b] 一…

SRAM BIST技術學習

MBIST 方法是目前大容量存儲器測試的主流技術&#xff0c;該技術利用芯片內部專門設計的BIST 電路進行自動化測試&#xff0c;能夠對嵌入式存儲器這種具有復雜電路結構的嵌入式模塊進行全面的測試。MBIST 電路將產生測試向量的電路模塊以及檢測測試結果的比較模塊都置于芯片的內…

【Zigbee技術入門教程-02】一圖讀懂ZStack協議棧的核心思想與工作機理

【Zigbee技術入門教程-02】一圖讀懂ZStack協議棧的核心思想與工作機理 廣東職業技術學院 歐浩源 Z-Stack協議棧是一個基于任務輪詢方式的操作系統&#xff0c;其任務調度和資源分配由操作系統抽象層OSAL管理著。 你可以理解為&#xff1a;Z-Stack協議棧 OSAL操作系統 CC25…

CMOS圖像傳感器——SmartSens

近年來CIS發展成為增量市場,國產CIS廠商也踴躍布局,給業界帶來許多驚喜。思特威(上海)電子科技股份有限公司(SmartSens)正是國產CIS中亮眼的一家廠商。數據顯示,2020年思特威安防監控市場的CIS芯片出貨量為1.46億顆,繼續位居全球出貨量TOP1的位置;同年,思特威的新興領…

Servlet第二篇【Servlet調用圖、Servlet細節、ServletConfig、ServletContext】

Servlet的調用圖 前面我們已經學過了Servlet的生命周期了&#xff0c;我們根據Servlet的生命周期畫出Servlet的調用圖加深理解 Servlet的細節 一個已經注冊的Servlet可以被多次映射 同一個Servlet可以被映射到多個URL上。 <servlet><servlet-name>Demo1</servle…

vue響應式原理

vue響應式原理 initState new Vue() > _init() > initState: function initState (vm: Component) {vm._watchers []const opts vm.$optionsif (opts.props) initProps(vm, opts.props)if (opts.methods) initMethods(vm, opts.methods)if (opts.data) {initData(vm)} …

Oracle數據庫管理與開發pdf

下載地址&#xff1a;網盤下載基本介紹編輯內容簡介Oracle是一個適合于大中型企事業的數據庫管理系統&#xff0c;在銀行、電信、移動通信、航空、保險、金融、氣象、鐵路、跨國公司和電子商務等諸多領域得到了廣泛的應用。據統計&#xff0c;在所有數據庫管理系統中&#xff0…

DVS/DVR區別

一、DVS &#xff08;Digital Video Server&#xff09;網絡視頻服務器的簡稱。DVS(網絡視頻服務器)的原理網絡視頻服務器主要實現模擬視音頻信號的IP 化。經數字化的視音頻信號MPEG-4 視頻壓縮算法和G.729/ADPCM 音頻壓縮算法進行壓縮編碼&#xff0c;然后通過IP 網將低碼率的…

自動對焦方法學習

實現自動對焦的方法有很多種,可以根據不同的工作原理,將自動對焦技術分成不同種類。 按照系統是否自帶信號發射系統,可以分為主動式與被動式兩種類型。 主動式對焦方法是由成像系統中的發射裝置發出信號,然后再由接收裝置接收從被攝景物所反射回來的反饋信號并利用通過計算…

微粒化運營:升級內容產業消費體驗(附視頻版)

那些最受歡迎的內容平臺做對了什么&#xff1f; Facebook和Google是全球互聯網廣告產業中最早開始微粒化運營的代表&#xff0c;Google的互聯網精準廣告的思路與微粒化運營是完全相同的&#xff0c;這兩家公司也因此獲得了全球超過20%的互聯網廣告的收入。 以Facebook為例&…

mycat讀寫分離

只需要讀寫分離的功能&#xff0c;分庫分表的都不需要。 涉及到的配置文件&#xff1a; 1.conf/server.xml 主要配置的是mycat的用戶名和密碼&#xff0c;mycat的用戶名和密碼和mysql的用戶名密碼是分開的&#xff0c;應用連接mycat就用這個用戶名和密碼。 <?xml version&q…

chisel快速入門(一)

一、概述 Chisel&#xff08;Constructing Hardware In a Scala Embedded Language&#xff09;是一種嵌入在高級編程語言Scala的硬件構建語言。Chisel實際上只是一些特殊的類定義&#xff0c;預定義對象的集合&#xff0c;使用Scala的用法&#xff0c;所以在寫Chisel程序時實際…

DVS/DVR常見的監控名詞

英文名詞 說明BNC 全稱Bayonet Nut Connector&#xff0c;一種用于同軸電纜的連接器DHCP 動態主機配置協議&#xff0c;用于動態地指派配置信息DNS 域名系統&#xff0c;以用戶友好的方式將名字轉換為…

導出數據生成excel

前臺&#xff1a; <asp:Button ID"btnMoney" runat"server" Text"經費使用總結表" CssClass"admin_cx marginleft" Height"25" OnClick"btnMoney_Click" /> 后臺&#xff1a; protected void btnMoney_Cli…

U盤基本處理,U盤與移動固態硬盤

一、辨別 USB2.0 和 USB3.0 1、從USB外觀上來看&#xff0c;USB2.0通常是白色或黑色&#xff0c;而USB3.0則改觀為“高大上”的藍色接口。 目前&#xff0c;部分筆記本電腦USB接口&#xff0c;已同時提供對USB2.0及USB3.0的支持&#xff0c;我們可以通過接口顏色來區別。 2、從…

UWP_小說在線閱讀器:功能要求與技術要求

注&#xff1a;2017年2月23日正式提上日程 學了WP開發也有一年了&#xff0c;也沒做過什么軟件的。17年進發UWP&#xff0c;鍛煉自己一下。做一個開源的小說閱讀器吧。 既然開發一個軟件。所以要設計一下吧。 功能要求&#xff1a; 可能要用到的技術&#xff0c;這個嗎&#xf…

chisel快速入門(二)

上一篇見此&#xff1a; chisel快速入門&#xff08;一&#xff09;_滄海一升的博客-CSDN博客簡單介紹了chisel&#xff0c;使硬件開發者能快速上手chisel。https://blog.csdn.net/qq_21842097/article/details/121415341 十、運行和測試 現在我們已經定義了模塊&#xff0c;…