ในระหว่างการเขียนโปรแกรมหรือเมื่อเขียนตัวรวบรวมข้อมูลเครือข่าย HTML มักจะต้องแยกวิเคราะห์เพื่อแยกข้อมูลที่มีประโยชน์ เครื่องมือที่ดีมีประโยชน์อย่างยิ่งและสามารถให้ความช่วยเหลือได้มากมาย
หลังจากใช้งาน: รู้สึกว่า htmlcleaner ดีกว่า htmlparser โดยเฉพาะอย่างยิ่ง xpath ของ htmlcleaner
ลองทำตัวอย่างของ htmlcleaner
1. การใช้ htmlcleaner:
1. htmlcleaner
HTMLCleaner เป็นภาษาโอเพนซอร์ส Java HTML Document Parser HTMLCleaner สามารถจัดระเบียบแต่ละองค์ประกอบของเอกสาร HTML ใหม่และสร้างเอกสาร HTML ที่มีโครงสร้างที่ดี (มีรูปแบบที่ดี) กฎที่ตามมาโดยค่าเริ่มต้นนั้นคล้ายกับกฎที่ใช้โดยเว็บเบราว์เซอร์ส่วนใหญ่เป็นแบบจำลองของเอกสาร อย่างไรก็ตามผู้ใช้สามารถให้แท็กและกฎที่กำหนดเองสำหรับการกรองและการจับคู่
ที่อยู่หน้าแรก: http://htmlcleaner.sourceforge.net/
ดาวน์โหลดที่อยู่: //www.vevb.com/softs/364983.html
2. ตัวอย่างพื้นฐานคว้าข้อมูลสนามบินใน Wikipedia
html-class-decmo.html
html-clean-demo.html <! : //www.w3.org/1999/xhtml "xml: lang =" zh-cn "dir =" ltr "> <สูง> <meta http-equiv =" content-seype "content =" ข้อความ/html; = gbk " /> <meta http-equiv =" content-language "content =" zh-cn " /> <title> html การสาธิตสะอาด </head> <body> <div class =" d_1 "> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> li> bar </li> <li> foo </li> <li> gzz </li></ul> </div> <div> <ul> <li> <a name = "my_href" href = " 1.Html "> text- </a> </li> <li> <a name =" my_href "href =" 2.html "> text-2 </a> </a> </a> <// A> </a> </a> </a> </a> </a> </a> </a> </a>/li> <li> <a name = "my_href" href = " 3.HTML "> text-3 </a> </li> <li> <a name =" my_href "href =" 4.html "> text-4 </a> </li> </ul> </ul> /div> </body> </html>
htmlcleanerdemo.java
com.chenlb; นำเข้า Java.io.file; tagnode node = clear.clean (ไฟล์ใหม่ ("html/html-demo.html"); "gbk"); 0) {System.out.println ("title ="+(tagnode) ns [0]); = node.evaluatexpath ("// div [@class = 'd_1']); สำหรับ (วัตถุบน: ns) {tagnode n = (tagnode) on; system.out.println ("/ttext = "+n.getText ());} system.out.println ("A:"); ("href")+", text ="+n.getText ());}}}
พารามิเตอร์ใน cleaner.clean () สามารถเป็นไฟล์, URL และเนื้อหาสตริง ยิ่งใช้มากขึ้นควรประเมิน xpath, getElementsByattValue, วิธี getElementsByName นอกจากนี้ HTMLCleaner นั้นเข้ากันได้ดีกว่ากับ HTML ที่ผิดปกติ
หยิบข้อมูลสนามบินในวิกิพีเดีย
นำเข้า Java.io com.moore.util.httpclientutil;/*** ใช้: todo** @author bbdtek*/parserport ระดับสาธารณะ {logger logger แบบคงที่ส่วนตัว = logg = logg erfactory.getLogger * @throws unupportencingExingexception * @throws xpatherexception */โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่น unportedencodexce ption, xpatherexception {string url = "http://zh.wikipedia.org/wiki/%E4%B8%E5 %8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%8C%E5%BD%E6%BA%BA%E5%BA%E5%88 88%97%E8% a1%a8 "; เนื้อหาสตริง = httpClientUtil.getil (). getCon (url); htmlcleaner hc = htmlclener ใหม่ (); xpath =" // div [@class = 'mw-content-ltr' class = 'wikitable + cortable'] // tbody // tr [@align = 'right'] "object [] objarr = null; objarr = tn .evaluatexpath (xpath); ถ้า (objarr! = null && objarr.length> 0) {สำหรับ (Object obj: objarr) {tagnode tntr = (tagnode) obj; objarrtr = tntr.evaluatexpath (xptr); ข้อมูล (str);}}}}}}
ประการที่สองการสำรวจ XPATH ครั้งแรก
1. บทนำสู่ XPath:
XPath เป็นภาษาที่ค้นหาข้อมูลในเอกสาร XML XPath สามารถใช้ในการสำรวจองค์ประกอบและแอตทริบิวต์ในเอกสาร XML
2. เลือกโหนด xpath
XPath ใช้นิพจน์พา ธ เพื่อเลือกโหนดในเอกสาร XML โหนดถูกเลือกโดยเส้นทางหรือขั้นตอน
นิพจน์พา ธ ที่มีประโยชน์ที่สุดแสดงอยู่ด้านล่าง:
การแสดงออก | อธิบาย |
---|---|
ชื่อมงกุฎ | เลือก sub -nodes ทั้งหมดของโหนดนี้ |
- | เลือกจากโหนดรูท |
- | เลือกโหนดในการเลือกโหนดปัจจุบันของการเลือกโหนดปัจจุบันโดยไม่พิจารณาตำแหน่ง |
จากนั้น | เลือกโหนดปัจจุบัน |
- | เลือกโหนดพาเรนต์ของโหนดปัจจุบัน |
- | เลือกแอตทริบิวต์ |
การแสดงออกที่ใช้กันทั่วไปบางส่วน
การแสดงออกของเส้นทาง | ผลลัพธ์ |
---|---|
/ร้านหนังสือ/หนังสือ [1] | เลือกองค์ประกอบหนังสือเล่มแรกที่เป็นของร้านหนังสือย่อย |
/ร้านหนังสือ/หนังสือ [สุดท้าย ()]] | เลือกองค์ประกอบหนังสือเล่มสุดท้ายที่เป็นของร้านหนังสือย่อย |
/ร้านหนังสือ/หนังสือ [สุดท้าย () -1] | เลือกองค์ประกอบหนังสือเล่มที่สองที่เป็นของร้านหนังสือย่อย |
/ร้านหนังสือ/หนังสือ [ตำแหน่ง () <3] | เลือกสองด้านหน้าขององค์ประกอบหนังสือที่เป็นขององค์ประกอบร้านหนังสือ |
// title [@lang] | เลือกองค์ประกอบชื่อทั้งหมดด้วยแอตทริบิวต์ชื่อ Lang |
// title [@lang = 'eng'] | เลือกองค์ประกอบชื่อทั้งหมดและองค์ประกอบเหล่านี้มีแอตทริบิวต์ Lang กับ Eng |
/ร้านหนังสือ/หนังสือ [ราคา> 35.00] | เลือกองค์ประกอบหนังสือทั้งหมดขององค์ประกอบร้านหนังสือและมูลค่าขององค์ประกอบราคาจะต้องมากกว่า 35.00 |
/ร้านหนังสือ/หนังสือ [ราคา> 35.00-/ชื่อ | เลือกองค์ประกอบชื่อทั้งหมดขององค์ประกอบหนังสือในองค์ประกอบร้านหนังสือและมูลค่าขององค์ประกอบราคาจะต้องมากกว่า 35.00 |