您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關在python中使用lxml時需要注意哪些事項,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
1、云計算,典型應用OpenStack。2、WEB前端開發,眾多大型網站均為Python開發。3.人工智能應用,基于大數據分析和深度學習而發展出來的人工智能本質上已經無法離開python。4、系統運維工程項目,自動化運維的標配就是python+Django/flask。5、金融理財分析,量化交易,金融分析。6、大數據分析。
1、使用注意
(1)lxml 能夠修正 HTML 代碼,但是可能會改錯了,解決方法:
使用etree.tostring觀察修改之后的html的樣子,根據修改之后的html字符串寫xpath
(2)提取頁面數據的思路
先分組,取到一個包含分組標簽的列表
遍歷,取其中每一組進行數據的提取,不會造成數據的對應錯亂
(3)lxml 能夠接受bytes和str的字符串
2、實例
from lxml import etree text = ''' <div> <ul> <li><a href="link1.html">first item</a></li> <li><a href="link2.html">second item</a></li> <li><a href="link3.html">third item</a></li> <li><a href="link4.html">fourth item</a></li> <li><a href="link5.html">fifth item</a> </ul> </div> ''' html = etree.HTML(text) print(html) # <Element html at 0x1f1007c9d08> print(etree.tostring(html).decode()) # 獲取 class 為 item-1 li 下的 a 的 href ret1 = html.xpath('//li[@class="item-1"]/a/@href') print(ret1) # 獲取 class 為 item-1 li 下的文本 ret2 = html.xpath("//li[@class='item-1']/a/text()") print(ret2) # 把 url 和 文本組成字典 # 如果其中一個獲取失敗或者沒有數據,則url 和 title 就不是原來對應的結果 for i in ret1: item = {} item['url'] = i item['title'] = ret2[ret1.index(i)] print(item) # 改進 ret3 = html.xpath('//li[@class="item-1"]') for i in ret3: item = {} item['url'] = i.xpath('./a/@href')[0] if len(i.xpath('./a/@href')) else None # ./a/@href 表示當前節點下的 item['title'] = i.xpath('./a/text()')[0] if len(i.xpath('./a/text()')) else None print(item)
關于在python中使用lxml時需要注意哪些事項就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。