python 提取整個 HTML 節點


有的時候,需要把整個 HTML 節點原封不動地取下來,也就是包括節點標簽、節點內容,甚至也包括內容中的空格、各種特殊符號等等。

假設已獲取到頁面源碼,並將其保存在變量 src 中。則可有代碼如下:


from html import unescape
from lxml import etree
from lxml import html


# 先加載頁面源碼,便於后續使用 XPath 解析
root = etree.HTML(src)

# 根據 XPath 路徑提取節點
script = root.xpath('//script')[-1]

# 關鍵的一步:把整個節點轉為字符串
raw_tab = html.tostring(script)

# 此時 print(raw_tab) 會遇到中文亂碼(其實不是亂碼,是另一種編碼顯示了)的情況,需要使用 unescape
json_str = json.loads(raw_tab)
print(unescape(json_str['$meta']['cityName']))

# 如果本身不是 json 字符串,則因為 unescape 函數接收的是 bytes-like 對象,所以需要先 decode
print(unescape(raw_tab.decode()))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM