python中pyquery無法獲取標籤名的dom節點

messchow發表於2019-02-16

前言

作為一位正經的前端開發人員,在學習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"
    src="https://segmentfault.comhttp://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”,問題迎刃而解。

相關文章