Python爬蟲Xpath和lxml類庫系列之九

2021-08-04 03:25:39 字數 3010 閱讀 4373

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

謂語用來查詢某個特定的節點或者包含某個指定的值的節點,被嵌在方括號中。

xpath 萬用字元可用來選取未知的 xml 元素。

通過在路徑表示式中使用「|」運算子,您可以選取若干個路徑。

lxml 是 乙個html/xml的解析器,主要的功能是如何解析和提取 html/xml 資料。

lxml和正則一樣,也是用 c 實現的,是一款高效能的 python html/xml 解析器,我們可以利用之前學習的xpath語法,來快速的定位特定元素以及節點資訊。

需要安裝c語言庫,可使用 pip 安裝:pip install lxml

from urllib import request, parse

# 匯入lxml庫的etree類用來處理html原始檔,注意此處匯入的是lxml的3.7.1版本

from lxml import etree

class

tiebaspider

(object):

def__init__

(self):

self.tieba_name = input('請輸入要爬取的貼吧的名字:')

self.begin_page = int(input('請輸入要爬取的起始頁:'))

self.end_page = int(input('請輸入要爬取的終止頁:'))

self.baseurl = ''

self.headers =

deftieba_spider

(self):

'''貼吧爬蟲排程器,用來構造url'''

# 組合搜尋的關鍵字

keyword_name =

# 對關鍵字進行編碼,後面加不加encode(』utf-8『),要嘗試才只知道的

kw_name = parse.urlencode(keyword_name)

# 組合請求路徑

url = self.baseurl + kw_name

# 分頁處理的爬蟲,range()函式是包左不包右

for page in range(self.begin_page, self.end_page + 1):

pn_page = (page - 1) * 50

pn = parse.urlencode()

# 組合最全的url路徑

fullurl = url + '&' + pn

html = self.load_request(fullurl)

self.deal_page(html)

defload_request

(self, url):

'''傳送請求,返回html頁面'''

req = request.request(url, headers=self.headers)

try:

response = request.urlopen(req)

return response.read()

except:

defdeal_page

(self, html):

'''處理貼吧每一頁'''

# 轉換為html的dom

html = etree.html(html)

# 提取每一頁裡面每條帖子的鏈結,/p/1234567890,返回乙個列表

link_page = html.xpath('//div[@class="t_con cleafix"]/div/div/div/a/@href')

for every_page in link_page:

print('正在處理第%s頁' % every_page)

# 拼接url

url_page = '' + every_page

# 傳送請求,返回每個帖子的響應檔案

html = self.load_request(url_page)

self.load_image(html)

defload_image

(self, html):

html_image = etree.html(html)

link_image = html_image.xpath('//img[@class="bde_image"]/@src')

for every_image in link_image:

data = self.load_request(every_image)

self.write_image(data, every_image[-10:])

defwrite_image

(self, data, param):

print('正在儲存%s' % param)

'''把提取到的存放到本地磁碟檔案'''

with open(param, 'wb') as f:

f.write(data)

if __name__ == '__main__':

spider = tiebaspider()

spider.tieba_spider()

Python 爬蟲 資料解析之Xpath和Lxml

xpath xml path language 是一門在xml和html文件中查詢資訊的語言,可用來在xml和html文件中對元素和屬性進行遍歷。在 xpath 中,有七種型別的節點 元素 屬性 文字 命名空間 處理指令 注釋以及文件 根 節點。xml 文件是被作為節點樹來對待的。樹的根被稱為文件節...

Python之爬蟲 etree和XPath實戰

下面 是在 上找到的乙個例子,空閒的時候可以自己除錯。coding utf 8 爬蟲 創業邦 創業公司資訊爬取 網頁url 爬取頁面中的創業公司,融資階段,創業領域,成立時間和創業公司的鏈結資訊。使用到requests,json,codecs,lxml等庫 requests用於訪問頁面,獲取頁面的源...

python爬蟲XPath學習

xpath簡介和基本使用 1.前言 之前爬蟲的時候沒有用過xpath,就是沒用過lxml這個包,遇到json格式網頁我用的json.loads html格式用的beautifulsoup裡面有find和find all函式查詢標籤之類的。但是xpath在爬蟲裡面也算乙個比較重要的工具,當然要學習啦。...