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

資訊專(zhuān)欄INFORMATION COLUMN

Python使用xslt提取網(wǎng)頁(yè)數(shù)據(jù)

mdluo / 950人閱讀

摘要:,用庫(kù)實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容提取是的一個(gè)庫(kù),可以迅速靈活地處理。,集搜客開(kāi)源代碼下載源開(kāi)源網(wǎng)絡(luò)爬蟲(chóng)源,文檔修改歷史,增補(bǔ)文字說(shuō)明把跟帖的代碼補(bǔ)充了進(jìn)來(lái),增加最后一章源代碼下載源

1,引言

在Python網(wǎng)絡(luò)爬蟲(chóng)內(nèi)容提取器一文我們?cè)敿?xì)講解了核心部件:可插拔的內(nèi)容提取器類(lèi)gsExtractor。本文記錄了確定gsExtractor的技術(shù)路線過(guò)程中所做的編程實(shí)驗(yàn)。這是第一部分,實(shí)驗(yàn)了用xslt方式一次性提取靜態(tài)網(wǎng)頁(yè)內(nèi)容并轉(zhuǎn)換成xml格式。

2,用lxml庫(kù)實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容提取

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

這2天測(cè)試了在python中通過(guò)xslt來(lái)提取網(wǎng)頁(yè)內(nèi)容,記錄如下:

2.1,抓取目標(biāo)

假設(shè)要提取集搜客官網(wǎng)舊版論壇的帖子標(biāo)題和回復(fù)數(shù),如下圖,要把整個(gè)列表提取出來(lái),存成xml格式

2.2,源代碼1:只抓當(dāng)前頁(yè),結(jié)果顯示在控制臺(tái)

Python的優(yōu)勢(shì)是用很少量代碼就能解決一個(gè)問(wèn)題,請(qǐng)注意下面的代碼看起來(lái)很長(zhǎng),其實(shí)python函數(shù)調(diào)用沒(méi)有幾個(gè),大篇幅被一個(gè)xslt腳本占去了,在這段代碼中,只是一個(gè)好長(zhǎng)的字符串而已,至于為什么選擇xslt,而不是離散的xpath或者讓人撓頭的正則表達(dá)式,請(qǐng)參看《Python即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目啟動(dòng)說(shuō)明》,我們期望通過(guò)這個(gè)架構(gòu),把程序員的時(shí)間節(jié)省下來(lái)一大半。

可以拷貝運(yùn)行下面的代碼(在windows10, python3.2下測(cè)試通過(guò)):

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="列表"/>







<標(biāo)題>






<回復(fù)數(shù)>









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






""")

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

得到的抓取結(jié)果如下圖:

2.4,源代碼2:翻頁(yè)抓取,結(jié)果存入文件

我們對(duì)2.2的代碼再做進(jìn)一步修改,增加翻頁(yè)抓取和存結(jié)果文件功能,代碼如下:

from urllib import request
from lxml import etree
import time

xslt_root = etree.XML("""


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







<標(biāo)題>






<回復(fù)數(shù)>









=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)

我們?cè)黾恿藢?xiě)文件的代碼,還增加了一個(gè)循環(huán),構(gòu)造每個(gè)翻頁(yè)的網(wǎng)址,但是,如果翻頁(yè)過(guò)程中網(wǎng)址總是不變?cè)趺崔k?其實(shí)這就是動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容,下面會(huì)討論這個(gè)問(wèn)題。

3,總結(jié)

這是開(kāi)源Python通用爬蟲(chóng)項(xiàng)目的驗(yàn)證過(guò)程,在一個(gè)爬蟲(chóng)框架里面,其它部分都容易做成通用的,就是網(wǎng)頁(yè)內(nèi)容提取和轉(zhuǎn)換成結(jié)構(gòu)化的操作難于通用,我們稱(chēng)之為提取器。但是,借助GooSeeker可視化提取規(guī)則生成器MS謀數(shù)臺(tái) ,提取器的生成過(guò)程將變得很便捷,而且可以標(biāo)準(zhǔn)化插入,從而實(shí)現(xiàn)通用爬蟲(chóng),在后續(xù)的文章中會(huì)專(zhuān)門(mén)講解MS謀數(shù)臺(tái)與Python配合的具體方法。

4,接下來(lái)閱讀

本文介紹的方法通常用來(lái)抓取靜態(tài)網(wǎng)頁(yè)內(nèi)容,也就是所謂的html文檔中的內(nèi)容,目前很多網(wǎng)站內(nèi)容是用javascript動(dòng)態(tài)生成的,一開(kāi)始html是沒(méi)有這些內(nèi)容的,通過(guò)后加載方式添加進(jìn)來(lái),那么就需要采用動(dòng)態(tài)技術(shù),請(qǐng)閱讀《Python爬蟲(chóng)使用Selenium+PhantomJS抓取Ajax和動(dòng)態(tài)HTML內(nèi)容》。

5,集搜客GooSeeker開(kāi)源代碼下載源

1.GooSeeker開(kāi)源Python網(wǎng)絡(luò)爬蟲(chóng)GitHub源

6,文檔修改歷史

2016-05-26:V2.0,增補(bǔ)文字說(shuō)明;把跟帖的代碼補(bǔ)充了進(jìn)來(lái)
2016-05-29:V2.1,增加最后一章源代碼下載源

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/37924.html

相關(guān)文章

  • Python爬蟲(chóng)使用Selenium+PhantomJS抓取Ajax和動(dòng)態(tài)HTML內(nèi)容

    摘要:,集搜客開(kāi)源代碼下載源開(kāi)源網(wǎng)絡(luò)爬蟲(chóng)源,文檔修改歷史,增補(bǔ)文字說(shuō)明,增加第五章源代碼下載源,并更換源的網(wǎng)址 showImg(https://segmentfault.com/img/bVvMn3); 1,引言 在Python網(wǎng)絡(luò)爬蟲(chóng)內(nèi)容提取器一文我們?cè)敿?xì)講解了核心部件:可插拔的內(nèi)容提取器類(lèi)gsExtractor。本文記錄了確定gsExtractor的技術(shù)路線過(guò)程中所做的編程實(shí)驗(yàn)。這是第二...

    ymyang 評(píng)論0 收藏0
  • Python使用xslt提取網(wǎng)頁(yè)數(shù)據(jù)

    摘要:在網(wǎng)絡(luò)爬蟲(chóng)內(nèi)容提取器一文我們?cè)敿?xì)了解了核心部件可插拔的內(nèi)容提取器。這是第一部分,實(shí)驗(yàn)了方式一次性提取靜態(tài)網(wǎng)頁(yè)內(nèi)容并轉(zhuǎn)換成格式。 在python網(wǎng)絡(luò)爬蟲(chóng)內(nèi)容提取器一文我們?cè)敿?xì)了解了核心部件:可插拔的內(nèi)容提取器gsExtractor。本文記錄了確定gsExtractor的技術(shù)路線過(guò)程中所做的編程實(shí)驗(yàn)。這是第一部分,實(shí)驗(yàn)了xslt方式一次性提取靜態(tài)網(wǎng)頁(yè)內(nèi)容并轉(zhuǎn)換成xml格式。用lxml庫(kù)實(shí)現(xiàn)...

    Jensen 評(píng)論0 收藏0
  • Python即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目: 內(nèi)容提取器的定義

    摘要:集搜客從文件讀取從字符串獲得通過(guò)接口獲得返回當(dāng)前提取方法,入?yún)⑹且粋€(gè)對(duì)象,返回是提取結(jié)果用法示例下面是一個(gè)示例程序,演示怎樣使用類(lèi)提取官網(wǎng)的帖子列表。 1. 項(xiàng)目背景 在python 即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目啟動(dòng)說(shuō)明中我們討論一個(gè)數(shù)字:程序員浪費(fèi)在調(diào)測(cè)內(nèi)容提取規(guī)則上的時(shí)間,從而我們發(fā)起了這個(gè)項(xiàng)目,把程序員從繁瑣的調(diào)測(cè)規(guī)則中解放出來(lái),投入到更高端的數(shù)據(jù)處理工作中。 2. 解決方案 為了解決這個(gè)問(wèn)...

    KunMinX 評(píng)論0 收藏0
  • API例子:用Python驅(qū)動(dòng)Firefox采集網(wǎng)頁(yè)數(shù)據(jù)

    摘要:開(kāi)源即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目將與基于的異步網(wǎng)絡(luò)框架集成,所以本例將使用采集淘寶這種含有大量代碼的網(wǎng)頁(yè)數(shù)據(jù),但是要注意本例一個(gè)嚴(yán)重缺陷用加載網(wǎng)頁(yè)的過(guò)程發(fā)生在中,破壞了的架構(gòu)原則。 showImg(https://segmentfault.com/img/bVyzAX); 1,引言 本文講解怎樣用Python驅(qū)動(dòng)Firefox瀏覽器寫(xiě)一個(gè)簡(jiǎn)易的網(wǎng)頁(yè)數(shù)據(jù)采集器。開(kāi)源Python即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目將與S...

    Harriet666 評(píng)論0 收藏0
  • Python即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目: 內(nèi)容提取器的定義(Python2.7版本)

    摘要:然而,和是有區(qū)別的,即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目?jī)?nèi)容提取器的定義一文的源碼無(wú)法在下使用,本文將發(fā)布一個(gè)的內(nèi)容提取器。 1. 項(xiàng)目背景 showImg(https://segmentfault.com/img/bVz5hX); 在Python即時(shí)網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目啟動(dòng)說(shuō)明中我們討論一個(gè)數(shù)字:程序員浪費(fèi)在調(diào)測(cè)內(nèi)容提取規(guī)則上的時(shí)間太多了(見(jiàn)上圖),從而我們發(fā)起了這個(gè)項(xiàng)目,把程序員從繁瑣的調(diào)測(cè)規(guī)則中解放出來(lái),投...

    xuxueli 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<