国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python使用xslt提取網頁數據

mdluo / 957人閱讀

摘要:,用庫實現網頁內容提取是的一個庫,可以迅速靈活地處理。,集搜客開源代碼下載源開源網絡爬蟲源,文檔修改歷史,增補文字說明把跟帖的代碼補充了進來,增加最后一章源代碼下載源

1,引言

在Python網絡爬蟲內容提取器一文我們詳細講解了核心部件:可插拔的內容提取器類gsExtractor。本文記錄了確定gsExtractor的技術路線過程中所做的編程實驗。這是第一部分,實驗了用xslt方式一次性提取靜態網頁內容并轉換成xml格式。

2,用lxml庫實現網頁內容提取

lxml是python的一個庫,可以迅速、靈活地處理 XML。它支持 XML Path Language (XPath) 和 Extensible Stylesheet Language Transformation (XSLT),并且實現了常見的 ElementTree API。

這2天測試了在python中通過xslt來提取網頁內容,記錄如下:

2.1,抓取目標

假設要提取集搜客官網舊版論壇的帖子標題和回復數,如下圖,要把整個列表提取出來,存成xml格式

2.2,源代碼1:只抓當前頁,結果顯示在控制臺

Python的優勢是用很少量代碼就能解決一個問題,請注意下面的代碼看起來很長,其實python函數調用沒有幾個,大篇幅被一個xslt腳本占去了,在這段代碼中,只是一個好長的字符串而已,至于為什么選擇xslt,而不是離散的xpath或者讓人撓頭的正則表達式,請參看《Python即時網絡爬蟲項目啟動說明》,我們期望通過這個架構,把程序員的時間節省下來一大半。

可以拷貝運行下面的代碼(在windows10, python3.2下測試通過):

from urllib import request
from lxml import etree
url="http://www.gooseeker.com/cn/forum/7"
conn = request.urlopen(url)

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

xslt_root = etree.XML("""


<列表>
=1 and count(.//*[@class="topic"]/a/text())>0])>0]" mode="列表"/>







<標題>






<回復數>









=1 and count(.//*[@class="topic"]/a/text())>0])>0]" mode="列表">






""")

transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(result_tree)
2.3,抓取結果

得到的抓取結果如下圖:

2.4,源代碼2:翻頁抓取,結果存入文件

我們對2.2的代碼再做進一步修改,增加翻頁抓取和存結果文件功能,代碼如下:

from urllib import request
from lxml import etree
import time

xslt_root = etree.XML("""


<列表>
=1 and count(.//*[@class="topic"]/a/text())>0])>0]" mode="列表"/>







<標題>






<回復數>









=1 and count(.//*[@class="topic"]/a/text())>0])>0]" mode="列表">






""")

baseurl = "http://www.gooseeker.com/cn/forum/7"
basefilebegin = "jsk_bbs_"
basefileend = ".xml"
count = 1
while (count < 12):
        url = baseurl + "?page=" + str(count)
        conn = request.urlopen(url)
        doc = etree.HTML(conn.read())
        transform = etree.XSLT(xslt_root)
        result_tree = transform(doc)
        print(str(result_tree))
        file_obj = open(basefilebegin+str(count)+basefileend,"w",encoding="UTF-8")
        file_obj.write(str(result_tree))
        file_obj.close()
        count += 1
        time.sleep(2)

我們增加了寫文件的代碼,還增加了一個循環,構造每個翻頁的網址,但是,如果翻頁過程中網址總是不變怎么辦?其實這就是動態網頁內容,下面會討論這個問題。

3,總結

這是開源Python通用爬蟲項目的驗證過程,在一個爬蟲框架里面,其它部分都容易做成通用的,就是網頁內容提取和轉換成結構化的操作難于通用,我們稱之為提取器。但是,借助GooSeeker可視化提取規則生成器MS謀數臺 ,提取器的生成過程將變得很便捷,而且可以標準化插入,從而實現通用爬蟲,在后續的文章中會專門講解MS謀數臺與Python配合的具體方法。

4,接下來閱讀

本文介紹的方法通常用來抓取靜態網頁內容,也就是所謂的html文檔中的內容,目前很多網站內容是用javascript動態生成的,一開始html是沒有這些內容的,通過后加載方式添加進來,那么就需要采用動態技術,請閱讀《Python爬蟲使用Selenium+PhantomJS抓取Ajax和動態HTML內容》。

5,集搜客GooSeeker開源代碼下載源

1.GooSeeker開源Python網絡爬蟲GitHub源

6,文檔修改歷史

2016-05-26:V2.0,增補文字說明;把跟帖的代碼補充了進來
2016-05-29:V2.1,增加最后一章源代碼下載源

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/37924.html

相關文章

  • Python爬蟲使用Selenium+PhantomJS抓取Ajax和動態HTML內容

    摘要:,集搜客開源代碼下載源開源網絡爬蟲源,文檔修改歷史,增補文字說明,增加第五章源代碼下載源,并更換源的網址 showImg(https://segmentfault.com/img/bVvMn3); 1,引言 在Python網絡爬蟲內容提取器一文我們詳細講解了核心部件:可插拔的內容提取器類gsExtractor。本文記錄了確定gsExtractor的技術路線過程中所做的編程實驗。這是第二...

    ymyang 評論0 收藏0
  • Python使用xslt提取網頁數據

    摘要:在網絡爬蟲內容提取器一文我們詳細了解了核心部件可插拔的內容提取器。這是第一部分,實驗了方式一次性提取靜態網頁內容并轉換成格式。 在python網絡爬蟲內容提取器一文我們詳細了解了核心部件:可插拔的內容提取器gsExtractor。本文記錄了確定gsExtractor的技術路線過程中所做的編程實驗。這是第一部分,實驗了xslt方式一次性提取靜態網頁內容并轉換成xml格式。用lxml庫實現...

    Jensen 評論0 收藏0
  • Python即時網絡爬蟲項目: 內容提取器的定義

    摘要:集搜客從文件讀取從字符串獲得通過接口獲得返回當前提取方法,入參是一個對象,返回是提取結果用法示例下面是一個示例程序,演示怎樣使用類提取官網的帖子列表。 1. 項目背景 在python 即時網絡爬蟲項目啟動說明中我們討論一個數字:程序員浪費在調測內容提取規則上的時間,從而我們發起了這個項目,把程序員從繁瑣的調測規則中解放出來,投入到更高端的數據處理工作中。 2. 解決方案 為了解決這個問...

    KunMinX 評論0 收藏0
  • API例子:用Python驅動Firefox采集網頁數據

    摘要:開源即時網絡爬蟲項目將與基于的異步網絡框架集成,所以本例將使用采集淘寶這種含有大量代碼的網頁數據,但是要注意本例一個嚴重缺陷用加載網頁的過程發生在中,破壞了的架構原則。 showImg(https://segmentfault.com/img/bVyzAX); 1,引言 本文講解怎樣用Python驅動Firefox瀏覽器寫一個簡易的網頁數據采集器。開源Python即時網絡爬蟲項目將與S...

    Harriet666 評論0 收藏0
  • Python即時網絡爬蟲項目: 內容提取器的定義(Python2.7版本)

    摘要:然而,和是有區別的,即時網絡爬蟲項目內容提取器的定義一文的源碼無法在下使用,本文將發布一個的內容提取器。 1. 項目背景 showImg(https://segmentfault.com/img/bVz5hX); 在Python即時網絡爬蟲項目啟動說明中我們討論一個數字:程序員浪費在調測內容提取規則上的時間太多了(見上圖),從而我們發起了這個項目,把程序員從繁瑣的調測規則中解放出來,投...

    xuxueli 評論0 收藏0

發表評論

0條評論

mdluo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<