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