摘要:選取名為的所有屬性庫使用庫安裝官網(wǎng)安裝進入命令行模式,執(zhí)行安裝進入終端模式,執(zhí)行安裝依賴的類庫后,執(zhí)行安裝驗證安裝導入模塊,如果沒有報錯就安裝成功。輸出結(jié)果輸出結(jié)果多了一個聲明,對解析結(jié)果沒影響。
當爬取到Html數(shù)據(jù)后,可以用正則對數(shù)據(jù)進行提取,但有時候正則表達式編寫起來不方便,而且萬一寫錯了,可能導致匹配失敗。這時候就需要借助其他解析工具了。XML引入 什么是XML?
XML 指可擴展標記語言(EXtensible Markup Language)
XML 是一種標記語言,很類似 HTML
XML 的設(shè)計宗旨是傳輸數(shù)據(jù),而非顯示數(shù)據(jù)
XML 的標簽需要我們自行定義。
XML 被設(shè)計為具有自我描述性。
XML 是 W3C 的推薦標準
W3School官方文檔:http://www.w3school.com.cn/xm...
XML和HTML的區(qū)別語法要求不同
在html中不區(qū)分大小寫,在xml中嚴格區(qū)分。
在HTML中,有時不嚴格,如果上下文清楚地顯示出段落或者列表鍵在何處結(jié)尾,那么你可以省略
或者之類的結(jié)束標記。在XML中,是嚴格的樹狀結(jié)構(gòu),絕對不能省略掉結(jié)束標記。在XML中,擁有單個標記而沒有匹配的結(jié)束標記的元素必須用一個/ 字符作為結(jié)尾。這樣分析器就知道不用查找結(jié)束標記了。
在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。
在HTML中,可以擁有不帶值的屬性名。在XML中,所有的屬性都必須帶有相應的值。
在XML文檔中,空白部分不會被解析器自動刪除;但是html是過濾掉空格的。
設(shè)計目標不同
XML被設(shè)計為傳輸和存儲數(shù)據(jù),其焦點是數(shù)據(jù)的內(nèi)容。
HTML顯示數(shù)據(jù)以及如何更好顯示數(shù)據(jù)。
XML的節(jié)點關(guān)系1、父(parent)
每個元素以及屬性都有一個父。
下面是一個簡單的XML例子中,book 元素是 title、author、year 以及 price 元素的父:
Harry Potter J K. Rowling 2005 29.99
2、 子(Children)
元素節(jié)點可有零個、一個或多個子。
在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:
Harry Potter J K. Rowling 2005 29.99
3、 同胞(Sibling)
擁有相同的父的節(jié)點
在下面的例子中,title、author、year 以及 price 元素都是同胞:
Harry Potter J K. Rowling 2005 29.99
4、 先輩(Ancestor)
某節(jié)點的父、父的父,等等。
在下面的例子中,title 元素的先輩是 book 元素和 bookstore 元素:
Harry Potter J K. Rowling 2005 29.99
5、 后代(Descendant)
某個節(jié)點的子,子的子,等等。
在下面的例子中,bookstore 的后代是 book、title、author、year 以及 price 元素:
Xpath 什么是Xpath?Harry Potter J K. Rowling 2005 29.99
Xpath,全稱XML Path Language,即XML路徑語言,它是一門在XML文檔中查找信息的語言,可用來在 XML 文檔中對元素和屬性進行遍歷。。最初是用來搜尋XML文檔的,但是它也適用與HTML文檔的搜索。
所以在做爬蟲時,可以使用XPath來做相應的信息抽取。
W3School官方文檔:http://www.w3school.com.cn/xp...
Xpath開發(fā)工具開源的XPath表達式編輯工具:XMLQuire(XML格式文件可用)
Chrome插件 XPath Helper
Firefox插件 XPath Checker
使用XpathXPath 使用路徑表達式來選取 XML 文檔中的節(jié)點或者節(jié)點集。這些路徑表達式和我們在常規(guī)的電腦文件系統(tǒng)中看到的表達式非常相似。
1、Xpath常用規(guī)則
表達式 | 描述 |
---|---|
nodename | 選取此節(jié)點的所有子節(jié)點 |
/ | 從當前節(jié)點選取直接子節(jié)點 |
// | 從當前節(jié)點選取子孫節(jié)點 |
. | 選取當前節(jié)點 |
.. | 選取當前節(jié)點的父節(jié)點 |
@ | 選取屬性 |
2、Xpath使用示例
以下面xmL文檔為例:
Harry Potter J K. Rowling 2005 29.99
路徑表達式 | 結(jié)果 |
---|---|
bookstore | 選取bookstore元素的所有子節(jié)點 |
/bookstore | 選取根元素bookstore。注:假如路徑起始于正斜杠/,則此路徑代表某元素的絕對路徑 |
bookstore/book | 選取屬于bookstore的子元素的所有book元素 |
//book | 選取所有book元素,不管在文檔的任何位置 |
bookstore//book | 選擇屬于 bookstore 元素的后代的所有 book 元素,而不管它們位于 bookstore 之下的什么位置。 |
//@lang | 選取名為lang的所有屬性 |
lxml官網(wǎng)
Github
1、window安裝
cmd進入命令行模式,執(zhí)行
pip3 install lxml
2、ubuntu16.04安裝
ctrl+alt+t進入終端模式,執(zhí)行:
sudo apt-get install -y build-essential libssl-devl libffi-dev libxml2-dev libxslt1-dev zlib1g-dev
安裝依賴的類庫后,執(zhí)行pip安裝:
sudo pip3 install lxml
3、驗證安裝
導入lxml模塊,如果沒有報錯就安裝成功。
$ python3 >>> import lxmletree模塊使用
初步使用
文件名lxml_test.py
# 使用 lxml 的 etree 庫 from lxml import etree text = """""" #利用etree.HTML,將字符串解析為HTML文檔,etree模塊可自動修正HTML文本 html = etree.HTML(text) # 按字符串序列化HTML文檔 ret = etree.tostring(html) # torstring()方法返回的結(jié)果是bytes類型,這里用decode()方法將其轉(zhuǎn)化為字符串 print(ret.decode("utf-8"))
- first item
- second item
- third item
- fourth item
- fifth item # 注意,此處缺少一個
閉合標簽
輸出結(jié)果:
etree模塊可以自動修正 html 代碼,例子里不僅補全了 li 標簽,還添加了 body,html 標簽。
文件讀取
除了直接讀取字符串,lxml還支持從文件里讀取內(nèi)容。這里我將上面的lxml_test.py文件執(zhí)行后的內(nèi)容保存為test.html
python lxml_test.py >> test.html
內(nèi)容就是上面的輸出結(jié)果 cat test.html:
使用etree.parse()方法來讀取文件。
from lxml import etree html = etree.parse("./test.html",HTMLParser()) ret = etree.tostring(html) print(ret.decode("utf-8"))
輸出結(jié)果
輸出結(jié)果多了一個DOCTYPE聲明,對解析結(jié)果沒影響。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43239.html
摘要:上一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)與正則表達式抓取貓眼電影排行下一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)解析庫的使用上一節(jié)我們實現(xiàn)了一個最基本的爬蟲,但提取頁面信息時我們使用的是正則表達式,用過之后我們會發(fā)現(xiàn)構(gòu)造一個正則表達式還是比較的繁瑣的,而且萬一有一點地 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---27、Requests與正則表達式抓取貓眼電影排行下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---29、解析庫的使用:...
摘要:是最有名的爬蟲框架之一,可以很方便的進行抓取,并且提供了很強的定制型,這里記錄簡單學習的過程和在實際應用中會遇到的一些常見問題一安裝在安裝之前有一些依賴需要安裝,否則可能會安裝失敗,的選擇器依賴于,還有網(wǎng)絡(luò)引擎,下面是下安裝的過程下安裝安裝 scrapy是python最有名的爬蟲框架之一,可以很方便的進行web抓取,并且提供了很強的定制型,這里記錄簡單學習的過程和在實際應用中會遇到的一...
摘要:學習爬蟲的背景了解。但是搜索引擎蜘蛛的爬行是被輸入了一定的規(guī)則的,它需要遵從一些命令或文件的內(nèi)容,如標注為的鏈接,或者是協(xié)議。不同領(lǐng)域不同背景的用戶往往具有不同的檢索目的和需求,搜索引擎無法提供針對具體某個用戶的搜索結(jié)果。 學習python爬蟲的背景了解。 大數(shù)據(jù)時代數(shù)據(jù)獲取方式 如今,人類社會已經(jīng)進入了大數(shù)據(jù)時代,數(shù)據(jù)已經(jīng)成為必不可少的部分,可見數(shù)據(jù)的獲取非常重要,而數(shù)據(jù)的獲取的方式...
摘要:大奉打更人賣報小郎君這個人仙太過正經(jīng)言歸正傳從紅月開始黑山老鬼穩(wěn)住別浪跳舞二解析數(shù)據(jù)是一個可以從或文件中提取數(shù)據(jù)的庫。 目錄 一、XPath解析數(shù)據(jù) 1、XPath解析數(shù)據(jù) 2、XML的樹形結(jié)構(gòu) 3、使用XPath選取節(jié)點 4、課堂案例 - 爬取起點小說網(wǎng) 二、BeautifulSoup解析...
摘要:不過不用擔心,中有很多非常優(yōu)秀的爬蟲框架,比如我們接下來要學習到的。結(jié)合以上分析我們基本確定了本次爬蟲的各個路線入口,接下來我們就開始通過程序來實現(xiàn)本次的目標。這里我們的目的是建立一種寫爬蟲的思路,而不在于怎么使用工具來爬數(shù)據(jù)。 概述 在上一篇文章《爬蟲學習之一個簡單的網(wǎng)絡(luò)爬蟲》中我們對爬蟲的概念有了一個初步的認識,并且通過Python的一些第三方庫很方便的提取了我們想要的內(nèi)容,但是...
閱讀 3471·2021-09-08 09:36
閱讀 2569·2019-08-30 15:54
閱讀 2360·2019-08-30 15:54
閱讀 1771·2019-08-30 15:44
閱讀 2395·2019-08-26 14:04
閱讀 2447·2019-08-26 14:01
閱讀 2884·2019-08-26 13:58
閱讀 1339·2019-08-26 13:47