Scrapy項目 - 實現豆瓣 Top250 電影信息爬取的爬蟲設計




       通過使Scrapy框架,掌握如何使用Twisted異步網絡框架來處理網絡通訊的問題,進行數據挖掘和對web站點頁面提取結構化數據,可以加快我們的下載速度,也可深入接觸各種中間件接口,靈活的完成各種需求,使得我們的爬蟲更強大、更高效。  


一、項目分析

      豆瓣電影網頁爬蟲,要求使用scrapy框架爬取豆瓣電影 Top 250網頁(https://movie.douban.com/top250?start=0)上所羅列上映電影的標題、主要信息、評分和電影簡介等的信息,將所爬取的內容保存輸出為CSV和JSON格式文件,在python程序代碼中要求將所輸出顯示的內容進行utf-8類型編碼。

1. 網頁分析

    對於本例實驗,要求爬取的豆瓣電影 Top 250網頁上的電影信息,顯而易見,網頁( https://movie.douban.com/top250?start=0)的頁面布局結構可如圖2-1所示: 

clip_image002[6]

圖1-1 所要爬取的信息頁面布局

使用xpath_helper_2_0_2輔助工具,對其中上映電影的標題、主要信息、評分和電影簡介等的信息內容進行xpath語法分析如下:

標題://div[@class='info']//span[@class='title'][1]/text()

信息://div[@class='info']//div[@class='bd']/p[@class='']/text()

評分:.//div[@class='bd']/div[@class='star']/span[@class='rating_num']/text()

簡介://div[@class='info']//div[@class='bd']/p[@class='quote']/span/text()


2. url分析

       獲取url進行解析移交給scrapy,而對於request類,含有的參數 url 與callback回調函數為parse_details。出現搜索到的url不全,加上當前目錄的url拼接,采用prase.urljoin(base,url),最后獲取下一頁url交給scrapy ,再用Request進行返回。

      換句話說,Spiders處理response時,提取數據並將數據經ScrapyEngine交給ItemPipeline保存,提取url重新經ScrapyEngine交給Scheduler進行下一個循環。直到無Url請求程序停止結束。



二、項目工具

       Python 3.7.1       、 JetBrains PyCharm 2018.3.2        其它輔助工具:略


三、項目過程

(一)使用Xmind工具對Python爬蟲程序(網絡爬蟲)流程圖進行分析,繪制如圖3-1所示的程序邏輯框架圖:

clip_image002[8]

圖3-1 程序邏輯框架圖

 

  (二)爬蟲程序調試過程BUG描述(截圖)

clip_image002[10]

圖3-2 爬蟲程序BUG描述①


clip_image002[12]

圖3-3 爬蟲程序BUG描述②


(三)爬蟲運行結果

clip_image002[14]

圖3-4 爬蟲程序輸出運行結果1


clip_image002[16]

圖3-5 爬蟲程序輸出文件


四、項目心得

  關於本例實驗心得可總結如下:

1、 當Scrapy執行crawl命令報錯:ModuleNotFoundError: No module named ***時,應該首先檢查Project Interpreter是否為系統安裝的python環境路徑,如圖4-1所示:

clip_image002[18]

圖4-1 檢查Project Interpreter路徑

2、 schelduler會按照一定的次序取出請求,經由引擎, 下載器中間鍵,發送給下載器dowmloader 這里的下載器中間鍵是設定在請求執行前,因此可以設定代理,請求頭,cookie等

3、 spider打開某網頁,獲取到一個或者多個request,經由scrapy engine傳送給調度器scheduler request特別多並且速度特別快會在scheduler形成請求隊列queue,由scheduler安排執行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM