Python即時網路爬蟲專案 內容提取器的定義

2021-09-13 20:46:51 字數 2425 閱讀 6385

專案背景

在python 即時網路爬蟲專案啟動說明中我們討論乙個數字:程式設計師浪費在調測內容提取規則上的時間,從而我們發起了這個專案,把程式設計師從繁瑣的調測規則中解放出來,投入到更高階的資料處理工作中。

解決方案

為了解決這個問題,我們把影響通用性和工作效率的提取器隔離出來,描述了如下的資料處理流程圖:

圖中「可插拔提取器」必須很強的模組化,那麼關鍵的介面有:

3. 提取器**

可插拔提取器是即時網路爬蟲專案的核心元件,定義成乙個類: g***tractor

使用模式是這樣的:

例項化乙個g***tractor物件

為這個物件設定xslt提取器,相當於把這個物件配置好(使用三類set***()方法)

把html dom輸入給它,就能獲得xml輸出(使用extract()方法)

下面是這個g***tractor類的源**

from urllib import request

from urllib.parse import quote

from lxml import etree

import time

''''''

class g***tractor(object):

def _init_(self):

self.xslt = ""

# 從檔案讀取xslt

def setxsltfromfile(self , xsltfilepath):

file = open(xsltfilepath , 'r' , encoding='utf-8')

try:

self.xslt = file.read()

finally:

file.close()

# 從字串獲得xslt

def setxsltfrommem(self , xsltstr):

self.xslt = xsltstr

# 通過gooseeker api介面獲得xslt

def setxsltfromapi(self , apikey , theme, middle=none, bname=none):

apiurl = ""+ apikey +"&theme="+quote(theme)

if (middle):

apiurl = apiurl + "&middle="+quote(middle)

if (bname):

apiurl = apiurl + "&bname="+quote(bname)

apiconn = request.urlopen(apiurl)

self.xslt = apiconn.read()

# 返回當前xslt

def getxslt(self):

return self.xslt

# 提取方法,入參是乙個html dom物件,返回是提取結果

def extract(self , html):

xslt_root = etree.xml(self.xslt)

transform = etree.xslt(xslt_root)

result_tree = transform(html)

return result_tree

用法示例下面是乙個示例程式,演示怎樣使用g***tractor類提取gooseeker官網的bbs帖子列表。本示例有如下特徵:

下面是源**

from urllib import request

from lxml import etree

from gooseeker import g***tractor

# 訪問並讀取網頁內容

url = ""

conn = request.urlopen(url)

doc = etree.html(conn.read())

# 生成xsltextractor物件

bb***tra = g***tractor()

# 呼叫set方法設定xslt內容

bb***tra.setxsltfromfile("xslt_bbs.xml")

# 呼叫extract方法提取所需內容

result = bb***tra.extract(doc)

# 顯示提取結果

print(str(result))

提取結果如下圖所示:

Python即時網路爬蟲 API說明

1,介面名稱 2,介面說明 如果您想編寫乙個網路爬蟲程式,您會發現大部分時間耗費在調測網頁內容提取規則上,不講正規表示式的語法如何怪異,即便使用xpath,您也得逐個編寫和除錯。如果要從乙個網頁上提取很多字段,逐個除錯xpath將是十分耗時的。通過這個介面,你可以直接獲得乙個調測好的提取器指令碼程式...

Python網路爬蟲實戰專案大全!

doubanspider 豆瓣讀書爬蟲。可以爬下豆瓣讀書標籤下的所有圖書,按評分排名依次儲存,儲存到excel中,可方便大家篩選蒐羅,比如篩選評價人數 1000的高分書籍 可依據不同的主題儲存到excel不同的sheet 採用user agent偽裝為瀏覽器進行爬取,並加入隨機延時來更好的模仿瀏覽器...

Python網路爬蟲

找到url,也就是相當於入口,找到你要爬取的鏈結,獲取整個頁面資料 使用正規表示式,匹配到你想要爬取的內容,這裡使用的主要是正規表示式和一些常用的開源庫 最後一步就是寫入文字以及儲存問題了,如文字檔案 資料庫 coding utf 8 是用來指定檔案編碼為utf 8 from urllib impo...