注意:在使用xpath解析資料時,需要將資料**改為是ie瀏覽器的user-agent,否則會出現瀏覽器中可行的xpath**,但是在程式中卻用不了
這裡提供ie9的header
mozilla/5.0 (compatible; msie 9.0; windows nt 6.1; win64; x64; trident/5.0)
xpath即為xml路徑語言,它是一種用來確定xml(標準通用標記語言的子集)文件中某部分位置的語言。xpath基於xml的樹狀結構,提供在資料結構樹中找尋節點的能力。 xpath 同樣也支援html.
xpath 是一門小型的查詢語言,這裡我們將它與 python 爬蟲相結合來介紹。
step1: 安裝 lxml 庫。
step2: from lxml import etree
step3: selector = etree.html(網頁源**)
step4: selector.xpath(一段神奇的符號)
xpath 使用路徑表示式來選取 xml 文件中的節點或節點集。節點是通過沿著路徑 (path) 或者步 (steps) 來選取的。
xpath 使用路徑表示式在 xml 文件中選取節點。節點是通過沿著路徑或者 step 來選取的。
假設有如下的文件:
<?xml version="1.0" encoding="iso-8859-1"?>
<
bookstore
>
<
book
>
<
title
lang
="eng"
>
harry potter
title
>
<
price
>
29.99
price
>
book
>
<
book
>
<
title
lang
="eng"
>
learning xml
title
>
<
price
>
39.95
price
>
book
>
bookstore
>
下面列出了最有用的路徑表示式:
表示式描述
nodename
選取此節點的所有子節點
/從根節點擊取
//從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置
.選取當前節點
..選取當前節點的父節點
@選取屬性
在下面的**中,我們已列出了一些路徑表示式以及表示式的結果:
路徑表示式
結果bookstore
選取 bookstore 元素的所有子節點
/bookstore
選取根元素 bookstore。
注釋:假如路徑起始於正斜槓( / ),則此路徑始終代表到某元素的絕對路徑!
bookstore/book
選取屬於 bookstore 的子元素的所有 book 元素
//book
選取所有 book 子元素,而不管它們在文件中的位置
bookstore//book
選擇屬於 bookstore 元素的後代的所有 book 元素,而不管它們位於 bookstore 之下的什麼位置
//@lang
選取名為 lang 的所有屬性
鑑於篇幅的,只列出了 xpath 的部分語法,更多例項,可以參考 w3chool 的資料
假設有如下 html 原始碼:
<divid
="content"
>
<
ulid
="useful"
>
<
li>
有效資訊1
li>
<
li>
有效資訊2
li>
<
li>
有效資訊3
li>
ul>
<
ulid
="useless"
>
<
li>
無效資訊1
li>
<
li>
無效資訊2
li>
<
li>
無效資訊3
li>
ul>
div>
<
divid
="url"
>
<
ahref
="">
陳浩的部落格
a>
<
ahref
=".photo"
title
="陳浩的相簿"
>
點我開啟
a>
div>
我們假設把上面的原始碼已經賦值給了字串變數html
:
from lxml importetree
# 假設已經存在 html 變數,值為上面的原始碼
selector = etree.html(html)
# 提取 li 中的有效資訊123
content = selector.xpath('//ul[
@id=
"useful"
]/li/text()')
for each
in content:
(each
)#提取 a 中的屬性
link = selector.xpath('//a/
@href
')for
each
in link:
(each
)title = selector.xpath('//a/
@title
')for
each
in title:
(each
)
python爬蟲基礎04 網頁解析庫xpath
xpath 是一門在 xml 文件中查詢資訊的語言。xpath 用於在 xml 文件中通過元素和屬性進行導航。相比於beautifulsoup,xpath在提取資料時會更加的方便。在python中很多庫都有提供xpath的功能,但是最基本的還是lxml這個庫,效率最高。在之前beautifulsou...
爬蟲神器xpath的用法(二)
爬取網頁內容的時候,往往網頁標籤比較複雜,對於這種情況,需要用xpath的starts with和string 功能屬性來處理,具體看事例 encoding utf 8 from lxml import etree html1 需要的內容1 需要的內容2 需要的內容3 提取id屬性為test開頭的的...
python 爬蟲中的extract
ul class list li 123 li li abc li ul 1xx.xpath ul class list li xx是html文件 xpath解析返回乙個解析器列表 2 xx.xpath ul class list li extract output 123 abc extract使...