成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python爬蟲實(shí)戰(zhàn)(4):豆瓣小組話題數(shù)據(jù)采集—?jiǎng)討B(tài)網(wǎng)頁

blastz / 1352人閱讀

摘要:,引言注釋上一篇爬蟲實(shí)戰(zhàn)安居客房產(chǎn)經(jīng)紀(jì)人信息采集,訪問的網(wǎng)頁是靜態(tài)網(wǎng)頁,有朋友模仿那個(gè)實(shí)戰(zhàn)來采集動(dòng)態(tài)加載豆瓣小組的網(wǎng)頁,結(jié)果不成功。

1, 引言

注釋:上一篇《Python爬蟲實(shí)戰(zhàn)(3):安居客房產(chǎn)經(jīng)紀(jì)人信息采集》,訪問的網(wǎng)頁是靜態(tài)網(wǎng)頁,有朋友模仿那個(gè)實(shí)戰(zhàn)來采集動(dòng)態(tài)加載豆瓣小組的網(wǎng)頁,結(jié)果不成功。本篇是針對(duì)動(dòng)態(tài)網(wǎng)頁的數(shù)據(jù)采集編程實(shí)戰(zhàn)。

Python開源網(wǎng)絡(luò)爬蟲項(xiàng)目啟動(dòng)之初,我們就把網(wǎng)絡(luò)爬蟲分成兩類:即時(shí)爬蟲和收割式網(wǎng)絡(luò)爬蟲。為了適應(yīng)各種應(yīng)用場(chǎng)景,GooSeeker的整個(gè)網(wǎng)絡(luò)爬蟲產(chǎn)品線包含了四類產(chǎn)品,如下圖所示:

本實(shí)戰(zhàn)是上圖中的“獨(dú)立python爬蟲”的一個(gè)實(shí)例,以采集豆瓣小組討論話題(https://www.douban.com/group/haixiuzu/discussion?start=0 )信息為例,記錄整個(gè)采集流程,包括python和依賴庫的安裝,即便是python初學(xué)者,也可以跟著文章內(nèi)容成功地完成運(yùn)行。

2,Python和相關(guān)依賴庫的安裝

運(yùn)行環(huán)境:Windows10

2.1,安裝Python3.5.2

官網(wǎng)下載鏈接: https://www.python.org/ftp/python/3.5.2/python-3.5.2.exe

下載完成后,雙擊安裝。

這個(gè)版本會(huì)自動(dòng)安裝pip和setuptools,方便安裝其它的庫

2.2,Lxml 3.6.0

Lxml官網(wǎng)地址: http://lxml.de/

Windows版安裝包下載: http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

對(duì)應(yīng)windows下python3.5的安裝文件為 lxml-3.6.0-cp35-cp35m-win32.whl

下載完成后,在windows下打開一個(gè)命令窗口,,切換到剛下載的whl文件的存放目錄,運(yùn)行pip install lxml-3.6.0-cp35-cp35m-win32.whl

2.3,下載網(wǎng)頁內(nèi)容提取器程序

網(wǎng)頁內(nèi)容提取器程序是GooSeeker為開源Python即時(shí)網(wǎng)絡(luò)爬蟲項(xiàng)目發(fā)布的一個(gè)類,使用這個(gè)類,可以大大減少數(shù)據(jù)采集規(guī)則的調(diào)試時(shí)間,具體參看《Python即時(shí)網(wǎng)絡(luò)爬蟲項(xiàng)目: 內(nèi)容提取器的定義》

下載地址: https://github.com/FullerHua/gooseeker/blob/master/core/gooseeker.py

把gooseeker.py保存在項(xiàng)目目錄下

2.4,安裝selenium

pip install selenium

2.5,PhantomJS下載

下載地址 http://phantomjs.org/download.html

把下載得到的phantomjs-2.1.1-windows.zip解壓到本機(jī)的某個(gè)文件夾下

把解壓后的文件夾中的phantomjs.exe的完整路徑加文件名記錄下來,用來替換下面代碼的 browser = webdriver.PhantomJS(executable_path="C:phantomjs-2.1.1-windowsinphantomjs.exe") 這一行中的兩個(gè)單引號(hào)之間的內(nèi)容。

3,網(wǎng)絡(luò)爬蟲的源代碼
# _*_coding:utf8_*_
# douban.py
# 爬取豆瓣小組討論話題

from urllib import request
from lxml import etree
from gooseeker import GsExtractor
from selenium import webdriver

class PhantomSpider:
    def getContent(self, url):
        browser = webdriver.PhantomJS(executable_path="C:phantomjs-2.1.1-windowsinphantomjs.exe")
        browser.get(url)
        time.sleep(3)
        html = browser.execute_script("return document.documentElement.outerHTML")
        output = etree.HTML(html)
        return output

    def saveContent(self, filepath, content):
        file_obj = open(filepath, "w", encoding="UTF-8")
        file_obj.write(content)
        file_obj.close()

doubanExtra = GsExtractor()   
# 下面這句調(diào)用gooseeker的api來設(shè)置xslt抓取規(guī)則
# 第一個(gè)參數(shù)是app key,請(qǐng)到GooSeeker會(huì)員中心申請(qǐng)
# 第二個(gè)參數(shù)是規(guī)則名,是通過GooSeeker的圖形化工具: 謀數(shù)臺(tái)MS 來生成的
doubanExtra.setXsltFromAPI("ffd5273e213036d812ea298922e2627b" , "豆瓣小組討論話題")  

url = "https://www.douban.com/group/haixiuzu/discussion?start="
totalpages = 5
doubanSpider = PhantomSpider()
print("爬取開始")

for pagenumber in range(1 , totalpages):
    currenturl = url + str((pagenumber-1)*25)
    print("正在爬取", currenturl)
    content = doubanSpider.getContent(currenturl)
    outputxml = doubanExtra.extract(content)
    outputfile = "result" + str(pagenumber) +".xml"
    doubanSpider.saveContent(outputfile , str(outputxml))

print("爬取結(jié)束")

運(yùn)行過程如下:

將上面的代碼保存到douban.py中,和前面2.3步下載的提取器類gooseeker.py放在同一個(gè)文件夾中

打開Windows CMD窗口,切換當(dāng)前目錄到存放douban.py的路徑(cd xxxxxxx)

運(yùn)行 python douban.py

請(qǐng)注意:為了讓源代碼更整潔,也為了讓爬蟲程序更有通用性,抓取規(guī)則是通過api注入到內(nèi)容提取器bbsExtra中的,這樣還有另外一個(gè)好處:如果目標(biāo)網(wǎng)頁結(jié)構(gòu)變化了,只需通過MS謀數(shù)臺(tái)重新編輯抓取規(guī)則,而本例的網(wǎng)絡(luò)爬蟲代碼不用修改。為內(nèi)容提取器下載采集規(guī)則的方法參看《Python即時(shí)網(wǎng)絡(luò)爬蟲:API說明—下載內(nèi)容提取器》。

4,爬蟲結(jié)果

在項(xiàng)目目錄下可以看到多個(gè)result**.xml文件,文件內(nèi)容如下圖所示:

5,總結(jié)

因?yàn)樾畔⒉杉?guī)則是通過api下載下來的,所以,本案例的源代碼顯得十分簡(jiǎn)潔。同時(shí),整個(gè)程序框架變得很通用,因?yàn)樽钣绊懲ㄓ眯缘牟杉?guī)則是從外部注入的。

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

GooSeeker開源Python即時(shí)網(wǎng)絡(luò)爬蟲GitHub源

7,文檔修改歷史

2016-07-15:V1.0

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38055.html

相關(guān)文章

  • python爬蟲實(shí)踐: 豆瓣小組命令行客戶端

    摘要:主要特性前一陣重新組織了一下代碼加了命令行信息用起來更方便了一些初步實(shí)現(xiàn)了豆瓣小組及用戶相關(guān)的爬蟲和請(qǐng)求基于和沒有用高階的諸如之類的爬蟲工具所有的命令行輸出都是標(biāo)準(zhǔn)的格式可以使用操作安裝僅支持使用兩種命令模式客戶端接口調(diào)用和豆瓣模塊接口 主要特性 前一陣重新組織了一下代碼, 加了命令行help信息, 用起來更方便了一些 初步實(shí)現(xiàn)了豆瓣小組及用戶相關(guān)的API爬蟲和請(qǐng)求 基于reques...

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

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

    xuxueli 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.30 - 學(xué)習(xí) Python 來做一些神奇好玩的事情吧

    摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個(gè)提問: pyth...

    lifesimple 評(píng)論0 收藏0
  • 零基礎(chǔ)如何學(xué)爬蟲技術(shù)

    摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲學(xué)習(xí)系列教程(來源于某博主:htt...

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

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

0條評(píng)論

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