一种快速的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']

当刮网站是谨慎的步骤刮,因为真正的网站往往是复杂的。

以这个例子为例,您希望获得所有用户上传。

&lt;div id="content"&gt;&lt;div id="sidebar"&gt;&lt;div id="latest"&gt;<ahref="/video?8wxOVn99FTE">Miley Cyrus - When I Look At You</a>&gt;br /&lt;<ahref="/video?46">Puppet theater</a>&lt;br /&gt;<ahref="/video?98">VBLOG #42</a>&lt;br /&gt;<ahref="/video?11">Fourth upload</a>&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="user"&gt;&lt;div id="uploads"&gt;<ahref="/video?12">First upload</a>&lt;br /&gt;<ahref="/video?23">Second upload</a>&lt;br /&gt;<ahref="/video?34">Third upload</a>&lt;br /&gt;<ahref="/video?41">Fourth upload</a>&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;

第一步是将搜索限制在正确的区域。

应该始终找到包含所需数据的最内部dom元素。

ret=parseDOM(html,"div",attrs={"id":"uploads"})

变量ret现在包含

['<a href="/video?12">First upload</a>&lt;br /&gt;<ahref="/video?23">Secondupload</a>&lt;br/&gt;<ahref="/video?34">Thirdupload</a>&lt;br/&gt;<ahref="/video?41">Fourthupload</a>&lt;br/&gt;']

现在我们得到视频网址。

videos=parseDOM(ret,"a",ret="href")printrepr(videos)# Prints [ "video?12", "video?23", "video?34", "video?41" ]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Apache Flink外部Jar   创建和强制转换对象数组时发生java错误   Java,添加数组   具有相同包结构和类的java JAR   java Jenkins未能构建Maven项目   java为什么一个forloop比另一个更快,尽管它们做的“一样”?   servlets在将“/”站点迁移到Java EE包时处理contextpath引用   无法解析java MavReplugin:2.21或其某个依赖项   泛型如何编写比较器来泛化Java中的两种类型的对象?   java Android Emulator未在netbeans上加载   多线程Java使用线程对数组中的数字求和:在同步块中使用新变量作为锁:差异   java如何在JSP/servlet中设置<input>标记的值?