一种快速的dom解析器
parsedom的Python项目详细描述
这是一个Common Functions and ParseDOM叉,用于xbmc外部。
获取元素内容。
fromparsedomimportparseDOMlink_html="<a href='bla.html'>Link Test</a>"ret=parseDOM(link_html,"a")printrepr(ret)# Prints ['Link Test']
获取元素属性。
link_html="<a href='bla.html'>Link Test</a>"ret=parseDOM(link_html,"a",ret="href")printrepr(ret)# Prints ['bla.html']
获取具有匹配属性的元素。
link_html="<a href='bla1.html' id='link1'>Link Test1</a><a href='bla2.html' id='link2'>Link Test2</a><a href='bla3.html' id='link3'>Link Test3</a>"ret1=parseDOM(link_html,"a",attrs={"id":"link1"},ret="href")ret2=parseDOM(link_html,"a",attrs={"id":"link2"})ret3=parseDOM(link_html,"a",attrs={"id":"link3"},ret="id")printrepr(ret1)# Prints ['bla1.html']printrepr(ret2)# Prints ['Link Test2']printrepr(ret3)# Prints ['link3']
当刮网站是谨慎的步骤刮,因为真正的网站往往是复杂的。
以这个例子为例,您希望获得所有用户上传。
<div id="content"><div id="sidebar"><div id="latest"><ahref="/video?8wxOVn99FTE">Miley Cyrus - When I Look At You</a>>br /<<ahref="/video?46">Puppet theater</a><br /><ahref="/video?98">VBLOG #42</a><br /><ahref="/video?11">Fourth upload</a><br /></div></div><div id="user"><div id="uploads"><ahref="/video?12">First upload</a><br /><ahref="/video?23">Second upload</a><br /><ahref="/video?34">Third upload</a><br /><ahref="/video?41">Fourth upload</a><br /></div></div></div>
第一步是将搜索限制在正确的区域。
应该始终找到包含所需数据的最内部dom元素。
ret=parseDOM(html,"div",attrs={"id":"uploads"})
变量ret现在包含
['<a href="/video?12">First upload</a><br /><ahref="/video?23">Secondupload</a><br/><ahref="/video?34">Thirdupload</a><br/><ahref="/video?41">Fourthupload</a><br/>']
现在我们得到视频网址。
videos=parseDOM(ret,"a",ret="href")printrepr(videos)# Prints [ "video?12", "video?23", "video?34", "video?41" ]