python中pyquery无法获取标签名的dom节点

bistukey 2019-06-28

前言

作为一位正经的前端开发人员,在学习python的过程中,自然而然选择了pyquery这款解析器,毕竟和前端的jquery一样省去了很多学习的时间。
但是在使用过程中发现一个问题,pyquery竟然无法像jquery一样很方便的去筛选dom节点。
经过一番排查发现:对于class类名,pyquery依然可以方便的获取节点,但是当使用如:a,div,img...等原生标签时,无论如何都获取不到节点
一度让我很奔溃...

罪魁祸首

<div xmlns="http://www.w3.org/1999/xhtml" class="image-item-inner" style="width: 398px; height: 598px;"><img src="http://p3.pstatp.com/origin/3f240001a4f84996876d"
    data-src="http://p3.pstatp.com/origin/3f240001a4f84996876d" alt="" /> <a href="http://p3.pstatp.com/origin/3f240001a4f84996876d"
    title="查看原图" target="_blank" ga_event="view_original_photo" class="image-origin"><i class="bui-icon icon-enlarge"
      style="font-size: 14px; color: rgb(255, 255, 255);" /></a></div>

其实问题就出在xmlns="http://www.w3.org/1999/xhtml"这里,pyquery默认解析后的文档是xmlns格式,而这种格式就是造成无法获取原生标签的原因。

doc = pq(browser.page_source,parser="html")

解决方法就是在解析时配置parser="html",问题迎刃而解。

相关推荐