爬蟲(六)xpath解析及其應用

2021-09-11 11:50:42 字數 2311 閱讀 9640

在了解xpath前我要先了解xml

xml 被設計用來傳輸和儲存資料。區別於html。

xml是用來儲存和傳輸資料的 和html的不同點:

(1) html用來顯示資料,xml是用來傳輸資料的

(2) html標籤是固定的,xml標籤是自定義的

而xpath 是一門在 xml 文件中查詢資訊的語言。xpath 可用來在 xml 文件中對元素和屬性進行遍歷。

常用的路徑表示式:

// : 不考慮位置的查詢

./ : 從當前節點往下查詢

@ : 選取屬性

為了方便xpath在解析中使用,我們可以安裝乙個xpath外掛程式在谷歌瀏覽器中,用來在瀏覽器中先試驗解析是否正確,如果無誤在寫入**。

屬性定位:

//input[@id='kw']

//imput[@class='bg s_btn']

層級定位:

索引定位:

//div[@id="head"]/div/div[2]/a[@class="toindex"]

[注]索引從1開始

邏輯運算:

//input[@class="s_ipt" and @name="wd"]

模糊匹配:

contains::

//input[contains(@class, "s_i")]

所有的input,有class屬性,並且屬性中帶有s_i的節點

starts-with: 

//input[starts-with(@class, "s")] 所有的input,有class屬性,並且屬性以『s』開頭

取文字:

//div[@id="u1"]/a[5]/text() 獲取節點內容

//div[@id="u1"]//text() 獲取節點裡面不帶標籤的所有內容

取屬性:

//div[@id="u1"]/a[5]/@href

from lxml import etree

兩種方式使用:將html文件變成乙個物件,然後呼叫物件的方法去查詢它

(1)本地檔案:

tree = etree.parse(檔名)

(2)網路檔案:

tree = etree.html(網頁字串)

呼叫tree.xpath("查詢路徑")

import urllib.request

import urllib.parse

from lxml import etree

import os

def handel_request(url, page):

headers =

url = url + str(page) + '/'

return urllib.request.request(url, headers=headers)

def parse_response(response):

tree = etree.html(response)

articles = tree.xpath('//article')

for article in articles:

title = article.xpath('./div/h1//text()')

content = article.xpath('.//p//text()')

final_content = title[0] + '\n' + '\t'.join(content) + '\n'

with open('duanzi.html', 'a') as fp:

fp.write(final_content)

def main():

url = ''

start_page = int(input("請輸入您要搜尋的開始頁碼:"))

end_page = int(input("請輸入您要搜尋的結束頁碼:"))

for page in range(start_page, end_page + 1):

request = handel_request(url, page)

response = urllib.request.urlopen(request).read().decode()

parse_response(response)

main()

爬蟲 解析內容 xpath

from lxml import etree text harry potter 29.99 learning xml 39.95 print type text 將字串轉化為element物件 html etree.html text print html print type html 將ele...

python爬蟲 xpath解析語法

xpath 是一門在xml或者html文件中導航查詢資訊的語法,對html有很好的支援 xpath 是乙個w3c的標準 xpath 包含標準庫 2.1節點擊擇 表示式 nodename nodename 選取此節點的所有子節點 從根節點擊取 div 選取所有div子元素,而不考慮他們的位置 選取當前...

爬蟲之xpath解析庫

xpath語法 1.常用規則 1.nodename 節點名定位 2.從當前節點擊取子孫節點 3.從當前節點擊取直接子節點 4.nodename attribute 根據屬性定位標籤 div class ui main 5.attributename 獲取屬性 6.text 獲取文字 2.屬性匹配兩種...