Python爬蟲通過爬取CSDN博客信息,學習lxml庫與XPath語法

      網友投稿 1024 2022-05-30

      lxml庫

      lxml是Python的一個解析庫,專門用于解析XML與HTML,支持XPath解析方式。由于lxml庫的底層是使用C語言編寫的,所以其解析效率非常的高。

      在我們后面講解使用該庫之前,我們需要安裝該庫。一般通過如下命令進行安裝即可,代碼如下:

      pip install lxml

      lxml基本用法

      既然,lxml庫支持解析XML以及HTML,那么肯定就需要學會這2種文檔的解析方式。下面,我們來分別講解。

      解析XML文件

      首先,我們需要使用lxml庫解析XML文件,這里XML文件其實有很多種類,這里博主隨便定義一個XML進行解析。

      XML代碼如下:

      21 21

      解析示例代碼如下所示:

      from lxml import etree tree = etree.parse("lxml_xml.xml") print(str(etree.tostring(tree, encoding='utf-8'), 'utf-8')) root = tree.getroot() print("根節點", root.tag) children = root.getchildren() for child in children: print("sex:", child[0].text) print("class :", child.get('class'))

      運行之后,效果如下所示:

      解析HTML文件

      解析HTML比XML稍微復雜一點,它需要創建一個HTMLParser()對象傳入到parser()方法中,因為其默認是解析XML的。

      HTML代碼如下:

      我是一個測試頁面

      解析代碼如下所示:

      from lxml import etree parser = etree.HTMLParser() tree = etree.parse('demo.html', parser) root = tree.getroot() result = etree.tostring(root, encoding='UTF-8', pretty_print=True, method='html') print(root.tag) children = root.getchildren() print("語言:", children[0].get('lang')) print(root[0][1].text)

      運行之后,效果如下所示:

      XPath

      估計細心的小伙伴,已經看出lxml庫直接使用的弊端了。因為這是小編寫的一個簡單的HTML與XML,所以它的層級很低。

      如果是真實的網頁,那么可能層級會很多,如果還按數組這樣一層一層往下查找,估計能搞出個十幾維的數組。這樣太復雜了。

      所以,這里我們需要引入XPath進行輔助解析。

      什么是XPath

      XPath于1991年11月6日稱為W3C標準,它被設計為可以在XSLT、XPointer以及其他XML解析軟件中使用,其中文文檔為:

      https://www.w3school.com.cn/xpath/index.asp

      XPath全稱XML Path Language,中文叫XML路徑語言,它是一種在XML文檔中查詢信息的語言。

      最初雖然只支持XML文件,但是后來隨著版本的迭代,已經可以支持HTML文件的解析與搜索,因為HTML與XML同源。

      XPath語法

      XPath語言的基本語法就是多級目錄的層級結構,但比數組那種容易理解的多。下表是博主歸納總結的XPath語法規則:

      XPath實戰

      既然,我們已經了解XPath具體的語法結構,那么我們將一一實戰這些語法,讓讀者更清晰,更快捷的掌握。

      測試HTML文件如下所示:

      我是一個測試頁面

      選取某節點的所有子孫節點

      假設我們需要獲取上面HTML文件中

      上一篇:ROS集成開發環境IDE----RoboWare開源
      下一篇:四大網絡抓包神器,總有一款適合你~
      相關文章
      亚洲日本VA中文字幕久久道具| 久久精品亚洲一区二区三区浴池 | 国产亚洲精品无码专区 | 亚洲av无码一区二区三区乱子伦| 国产午夜亚洲精品不卡电影| 久久亚洲精品无码网站| 亚洲精品无码一区二区| 亚洲人成色99999在线观看| 日韩亚洲国产高清免费视频| 亚洲日韩国产精品乱-久| 久久久久久亚洲精品影院| youjizz亚洲| 亚洲人成人77777网站不卡| 亚洲女人初试黑人巨高清| 中文字幕亚洲综合久久| 老汉色老汉首页a亚洲| 亚洲精品日韩专区silk| 亚洲国产美女福利直播秀一区二区| 亚洲国产综合专区在线电影 | 色噜噜噜噜亚洲第一| 亚洲AV无码国产精品永久一区| 亚洲AV无码国产剧情| 国产99久久亚洲综合精品| 亚洲男人第一无码aⅴ网站| 亚洲一区无码精品色| 亚洲精品无码高潮喷水在线| 国产成人亚洲综合色影视| 久久亚洲精品成人| 亚洲视频一区二区三区| 亚洲性一级理论片在线观看| 最新国产成人亚洲精品影院| 亚洲综合av一区二区三区| 亚洲国产美女精品久久久| 亚洲成片观看四虎永久| 久久久无码精品亚洲日韩软件 | 亚洲欧洲日产韩国在线| 伊人久久五月丁香综合中文亚洲| 亚洲国产精品嫩草影院| 亚洲AV无码之日韩精品| 黑人大战亚洲人精品一区| 亚洲AV无码一区二区乱子伦|