1. 程式人生 > >python網路爬蟲——lxml

python網路爬蟲——lxml

解析XML字串
網頁下載下來以後是字串的形式,使用etree.fromstring(str)構造一個etree._ElementTree物件,使用etree.tostring(t)返回一個字串

from lxml import etree

xml_string='<root><foo id="foo-id" class="foo zoo">Foo</foo><bar>中文</bar><baz></baz></root>'
root=etree.fromstring(xml_string)

print etree.tostring(root)
# <root><foo id="foo-id" class="foo zoo">Foo</foo><bar>&#20013;&#25991;</bar><baz/></root>


print etree.tostring(root,pretty_print=True)

#沒有子節點的baz變成了自閉和的標籤
"""
<root>
  <foo id="foo-id" class="foo zoo">Foo</foo>
  <bar>&#20013;&#25991;</bar>
  <baz/>
</root>
"""

print type(root)
#tostring返回的是一個_Element型別的物件,也使整個xml樹的根結點
# <type 'lxml.etree._Element'>

Element結構
etree._Element是一個設計很精妙的結構,可以把它當作一個物件訪問當前節點自身的文字節點,可以把它當作一個叔祖,元素就是他的子節點,可以把它當作一個字典,從而遍歷它的屬性:

foo=root[0]
result={}
for attr,val in foo.items():
    result[attr]=val
print result
# {'id': 'foo-id', 'class': 'foo zoo'}

#獲取foo標籤中id對應的值
print foo.get('id')
# foo-id

#foo標籤的屬性
print foo.attrib
# {'id': 'foo-id', 'class': 'foo zoo'}

Element 和 ElementTree
xml 是一個樹形結構,lxml 使用etree._Element和 etree._ElementTree來分別代表樹中的節點和樹,etree.ELement和 etree.ElementTree 分別是兩個工廠函式

t=root.getroottree()

print t
# <lxml.etree._ElementTree object at 0x7fedd2caca28>
#獲得一個結點對應的樹物件


print t.getroot()
# <Element root at 0x7fbd2ecb3a70>
#返回樹的根結點

foo_tree=etree.ElementTree(root[0])
#從foo這個節點構造一個樹,那麼這個節點就是這個樹的根
print foo_tree
# <lxml.etree._ElementTree object at 0x7f1bf391e998>
print foo_tree.getroot().tag
# foo

XPath
_Element和 _ElementTree 分別具有xpath 函式,兩者的區別在於:
如果是相對路徑,_Element.xpath是以當前節點為參考的,_ElementTree.xpath以根為參考
如果是絕對路徑,_ElementTree.xpath是以當前節點的getroottree的根節點為參考的

foo=root[0]

print foo.xpath('/root')[0].tag
# root
print foo.xpath('.')[0].tag
# foo

t=root.getroottree()
print t.xpath('/root')[0].tag
# root
print t.xpath('.')[0].tag
# root

相關推薦

python網路爬蟲——lxml

解析XML字串 網頁下載下來以後是字串的形式,使用etree.fromstring(str)構造一個etree._ElementTree物件,使用etree.tostring(t)返回一個字串 from lxml import etree xml_string

python網路爬蟲(一)

網路爬蟲之前奏 網路爬蟲之規則 Requests庫入門 requests庫的安裝 requests的詳細資訊 Win平臺: “以管理員身份執行” cmd,執行pip3 install requests。 requests庫安裝成功與否的測試

python網路爬蟲

實戰三—向搜尋引擎提交搜尋請求 關鍵點:利用搜索引擎提供的介面 百度的介面:wd=“要搜尋的內容” 360的介面:q=“要搜尋的內容” 所以我們只要把我們提交給伺服器的url修改成對應的格式,就可以向搜尋引擎提交關鍵字。 修改url,第一個想到的就是params引數。只

Python網路爬蟲快速入門到精通

阿里雲大學線上工作坊上線,原理精講+實操演練,讓你真正掌握雲端計算、大資料技能。 Python專家為你詳細講解爬蟲技術的原理與實戰,3大框架詳解+6場實戰演練+反爬技術+分散式爬蟲,講師線上答疑,全面掌握Python爬蟲。 爬蟲有什麼用呢? 你要找工作,想知道哪個崗位當前最熱門,爬取分析

python網路爬蟲

實戰一,爬取京東商品 import requests url = "https://item.jd.com/27217068296.html" try: r = requests.get(url) r.raise_for_status() #獲取爬取失敗異常 r.enc

python網路爬蟲

瞭解HTTP協議 請求與響應模式的協議: 使用者提出對URL(用來定位網路中的資源位置)地址資料的操作請求,伺服器給予相應。 無狀態的應用層協議:兩次請求之間不會互相影響。 HTTP協議支援的請求種類: 如果URL處的資源很龐大,我們就可以用head方法讀取部分資訊。

我的 Python 網路爬蟲直播分享要來了!

開篇之前先提一下上週日的事情。 上週日的時候我參加了北京站的 PyCon China 2018 開發者大會,PyCon 大家知道的吧!就是 Python 界最大的技術開發者大會,會上會有很多 Python 開發者分享自己的相關開發經驗,開發者主要來自歐美國家,而 PyCon China 就是中國區的 PyC

python網路爬蟲

大概框架 Request庫的安裝 爬取網頁最好用的第三方庫 直接安裝即可(用於OS X) pip3 install requests request庫的常用方法: request庫一共有七個常用方法。一個基本方法是request方法,其他的方法都是呼叫request方

Python網路爬蟲實戰

阿里雲大學:Python網路爬蟲實戰 網路爬蟲(又被稱為網頁蜘蛛,網路機器人),是一種按照一定的規則,自動的抓取資訊的程式或者指令碼。 網路爬蟲是網際網路上進行資訊採集的通用手段,在網際網路的各個專業方向上都是不可或缺的底層技術支撐。本課程從爬蟲基礎開始,全面介紹了Python網路爬蟲技術,

資料處理(玩轉python網路爬蟲

從網頁上採集的資料後,大多數的資料是雜亂無章的,這時就需要對資料進行加工處理,去掉一些垃圾資料才能得到我們想要的資料。常用的方法有以下三種方法:字串操作,正則表示式和第三方模組庫。 一、字串操作(擷取、替換、查詢和分割) (1)擷取:字串[開始位置:結束位置:間隔位置] 開始位置為

Requests庫函式的學習(玩轉python網路爬蟲

一、請求方式 HTTP常用的請求方式是GET和POST,Requests對此區分兩種不同的請求方式。 (1)GET請求 Requests的GET請求分為兩種:不帶引數和帶引數。判斷URL是否帶有引數,通過對“?”進行判斷,“?”表示帶有引數。 import requests # 第一

python網路爬蟲磁碟快取資料

import os import re import urllib.parse import pickle class DiskCache: def __init__(self,cache_dir='cache'): self.cache_dir=cache_dir

python網路爬蟲(web spider)系統化整理總結(二):爬蟲python程式碼示例(兩種響應格式:json和html)

        上一篇部落格(入門知識篇),對爬蟲有了一個基本的瞭解,但是具體怎麼實現一個爬蟲程式呢?         一般情況下,我們在瀏覽器獲取資訊,是

python網路爬蟲(web spider)系統化整理總結(一):入門

接觸爬蟲很久了,一直沒有個系統的理解和整理,近來假日無事,總結一下。 -------------------------------------------以下是目錄--------------------------------------------------------- 一、爬蟲概

Python網路爬蟲之requests庫Scrapy爬蟲比較

requests庫Scrapy爬蟲比較 相同點: 都可以進行頁面請求和爬取,Python爬蟲的兩個重要技術路線 兩者可用性都好,文件豐富,入門簡單。 兩者都沒有處理JS,提交表單,應對驗證碼等功能(可擴充套件) 想爬取有驗證碼的,換需要學習別的庫知識。 不同點: Scrapy,非同

Python網路爬蟲之製作股票資料定向爬蟲 以及爬取的優化 可以顯示進度條!

候選網站: 新浪股票:http://finance.sina.com.cn/stock/ 百度股票:https://gupiao.baidu.com/stock/ 選取原則: 無robots協議 非js網頁 資料在HTMLK頁面中的 F12,檢視原始

Python網路爬蟲之爬取淘寶網頁頁面 MOOC可以執行的程式碼

可以實現功能的全部程式碼: import requests import re def getHTMLText(url): try: r = requests.get(url, timeout = 30) r.raise_for_statu

Python網路爬蟲之股票資料Scrapy爬蟲例項介紹,實現與優化!(未成功生成要爬取的內容!)

結果TXT文本里面竟然沒有內容!cry~ 編寫程式: 步驟: 1. 建立工程和Spider模板 2. 編寫Spider 3. 編寫ITEM Pipelines 程式碼:成功建立 D:\>cd pycodes D:\pycodes>

python網路爬蟲開發實戰(崔慶才)_14頁_chromedriver環境配置和載入

自己1,環境配置,我下載了相對應的Chromedriver(其實我也不知道對不對應,都是下載最新版的我猜應該會對應),然後在任何資料夾下輸入command+shift+G,開啟輸入視窗,任何輸入  /usr/local/bin  ,然後複製下載好的Chromedriver進去bin下面,(

分享《精通Python網路爬蟲:核心技術、框架與專案實戰》中文PDF+原始碼

下載:https://pan.baidu.com/s/1DqeZDF-MOAQ6hlNx2fq3JA 《精通Python網路爬蟲:核心技術、框架與專案實戰》中文PDF+原始碼PDF,306頁,帶書籤目錄。配套原始碼。 系統介紹Python網路爬蟲,注重實戰,涵蓋網路爬蟲原理、如何手寫Python網路爬蟲、