分享一個解析html的python的框架--AdvancedHTMLParser

最近在研究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

相關文章
相關標籤/搜索