摘要:,引言注釋上一篇爬蟲實戰安居客房產經紀人信息采集,訪問的網頁是靜態網頁,有朋友模仿那個實戰來采集動態加載豆瓣小組的網頁,結果不成功。
1, 引言
注釋:上一篇《Python爬蟲實戰(3):安居客房產經紀人信息采集》,訪問的網頁是靜態網頁,有朋友模仿那個實戰來采集動態加載豆瓣小組的網頁,結果不成功。本篇是針對動態網頁的數據采集編程實戰。
Python開源網絡爬蟲項目啟動之初,我們就把網絡爬蟲分成兩類:即時爬蟲和收割式網絡爬蟲。為了適應各種應用場景,GooSeeker的整個網絡爬蟲產品線包含了四類產品,如下圖所示:
本實戰是上圖中的“獨立python爬蟲”的一個實例,以采集豆瓣小組討論話題(https://www.douban.com/group/haixiuzu/discussion?start=0 )信息為例,記錄整個采集流程,包括python和依賴庫的安裝,即便是python初學者,也可以跟著文章內容成功地完成運行。
2,Python和相關依賴庫的安裝運行環境:Windows10
2.1,安裝Python3.5.2官網下載鏈接: https://www.python.org/ftp/python/3.5.2/python-3.5.2.exe
下載完成后,雙擊安裝。
這個版本會自動安裝pip和setuptools,方便安裝其它的庫
2.2,Lxml 3.6.0Lxml官網地址: http://lxml.de/
Windows版安裝包下載: http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
對應windows下python3.5的安裝文件為 lxml-3.6.0-cp35-cp35m-win32.whl
下載完成后,在windows下打開一個命令窗口,,切換到剛下載的whl文件的存放目錄,運行pip install lxml-3.6.0-cp35-cp35m-win32.whl
2.3,下載網頁內容提取器程序網頁內容提取器程序是GooSeeker為開源Python即時網絡爬蟲項目發布的一個類,使用這個類,可以大大減少數據采集規則的調試時間,具體參看《Python即時網絡爬蟲項目: 內容提取器的定義》
下載地址: https://github.com/FullerHua/gooseeker/blob/master/core/gooseeker.py
把gooseeker.py保存在項目目錄下
2.4,安裝seleniumpip install selenium
2.5,PhantomJS下載下載地址 http://phantomjs.org/download.html
把下載得到的phantomjs-2.1.1-windows.zip解壓到本機的某個文件夾下
把解壓后的文件夾中的phantomjs.exe的完整路徑加文件名記錄下來,用來替換下面代碼的 browser = webdriver.PhantomJS(executable_path="C:phantomjs-2.1.1-windowsinphantomjs.exe") 這一行中的兩個單引號之間的內容。
3,網絡爬蟲的源代碼# _*_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() # 下面這句調用gooseeker的api來設置xslt抓取規則 # 第一個參數是app key,請到GooSeeker會員中心申請 # 第二個參數是規則名,是通過GooSeeker的圖形化工具: 謀數臺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("爬取結束")
運行過程如下:
將上面的代碼保存到douban.py中,和前面2.3步下載的提取器類gooseeker.py放在同一個文件夾中
打開Windows CMD窗口,切換當前目錄到存放douban.py的路徑(cd xxxxxxx)
運行 python douban.py
請注意:為了讓源代碼更整潔,也為了讓爬蟲程序更有通用性,抓取規則是通過api注入到內容提取器bbsExtra中的,這樣還有另外一個好處:如果目標網頁結構變化了,只需通過MS謀數臺重新編輯抓取規則,而本例的網絡爬蟲代碼不用修改。為內容提取器下載采集規則的方法參看《Python即時網絡爬蟲:API說明—下載內容提取器》。
4,爬蟲結果在項目目錄下可以看到多個result**.xml文件,文件內容如下圖所示:
因為信息采集規則是通過api下載下來的,所以,本案例的源代碼顯得十分簡潔。同時,整個程序框架變得很通用,因為最影響通用性的采集規則是從外部注入的。
6,集搜客GooSeeker開源代碼下載源GooSeeker開源Python即時網絡爬蟲GitHub源
7,文檔修改歷史2016-07-15:V1.0
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38055.html
摘要:主要特性前一陣重新組織了一下代碼加了命令行信息用起來更方便了一些初步實現了豆瓣小組及用戶相關的爬蟲和請求基于和沒有用高階的諸如之類的爬蟲工具所有的命令行輸出都是標準的格式可以使用操作安裝僅支持使用兩種命令模式客戶端接口調用和豆瓣模塊接口 主要特性 前一陣重新組織了一下代碼, 加了命令行help信息, 用起來更方便了一些 初步實現了豆瓣小組及用戶相關的API爬蟲和請求 基于reques...
摘要:然而,和是有區別的,即時網絡爬蟲項目內容提取器的定義一文的源碼無法在下使用,本文將發布一個的內容提取器。 1. 項目背景 showImg(https://segmentfault.com/img/bVz5hX); 在Python即時網絡爬蟲項目啟動說明中我們討論一個數字:程序員浪費在調測內容提取規則上的時間太多了(見上圖),從而我們發起了這個項目,把程序員從繁瑣的調測規則中解放出來,投...
摘要:學習筆記七數學形態學關注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學習筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現代方法基于區域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個提問: pyth...
摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...
閱讀 3915·2021-11-16 11:44
閱讀 3115·2021-11-12 10:36
閱讀 3372·2021-10-08 10:04
閱讀 1256·2021-09-03 10:29
閱讀 390·2019-08-30 13:50
閱讀 2604·2019-08-29 17:14
閱讀 1734·2019-08-29 15:32
閱讀 1080·2019-08-29 11:27