最近在研究python爬蟲,這方面的庫也很多,但大多都用不順手.
今天在github上搜索時發現了這個框架,其用法很簡單,和javascript操做DOM幾乎同樣,剛使用了下,感受很好用,框架也不大,不算文檔70多k,安裝也很方便.因此就分享給你們.
地址:https://github.com/kata198/AdvancedHTMLParser
下載後,運行 python setup.py install
使用列子javascript
#coding=utf-8 import AdvancedHTMLParser ht = ''' <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>網頁標題</title> </head> <body> <div class="link"> <a class="sf" href="http://segmentfault.com/" >Segmentfault</a><br> <a href="http://segmentfault.com/u/missyou" >個人主頁</a> </div> <div id="testid" >div#testid</div> <p>測試段落一</p> <p>測試段落二</p> <p>測試段落三</p> <p>測試段落四</p> </body> </html> ''' parser = AdvancedHTMLParser.AdvancedHTMLParser() parser.parseStr(ht.decode('gbk').encode('utf-8')) #我在windows下寫的,因此這裏轉換了編碼 #網頁編碼 print parser.encoding #根據標籤名獲取元素 items = parser.getElementsByTagName("p") for item in items: print item.innerHTML #根據類名獲取 items = parser.getElementsByClassName("link") #獲取a鏈接的文本和連接 print items[0].getElementsByClassName("sf")[0].innerHTML print items[0].getElementsByClassName("sf")[0].getAttribute("href") #根據id獲取 print parser.getElementById("testid").innerHTML
輸出以下:
utf-8
測試段落一
測試段落二
測試段落三
測試段落四
Segmentfault
http://segmentfault.com/
div#testidhtml
是否是很方便呢.
本文同步發表在CSDN,轉載請註明做者!java