Scrapy項目 - 實現騰訊網站社會招聘信息爬取的爬蟲設計





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

      熟悉掌握基本的網頁和url分析,同時能靈活使用Xmind工具對Python爬蟲程序(網絡爬蟲)流程圖進行分析。同時,使用Weka 3.7工具,對所獲取得到的數據進行數據挖掘分析操作。


一、項目分析

       本次的實驗內容要求使用scrapy框架,爬取騰訊招聘官網中網頁(https://hr.tencent.com/position.php?&start=0)上所羅列的招聘信息,如:其中的職位名稱、鏈接、職位類別、人數、地點和發布時間。並且將所爬取的內容保存輸出為CSV和JSON格式文件,在python程序代碼中要求將所輸出顯示的內容進行utf-8類型編碼。

1. 網頁分析

         在本例實驗開始之前,需要對所要求爬取的騰訊招聘網頁進行網頁分析,其中(https://hr.tencent.com/position.php?&start=0)的界面布局結構可如圖2-1所示:

clip_image002

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

     使用xpath_helper_2_0_2輔助工具,對其中招聘信息的職位名稱、鏈接、職位類別、人數、地點和發布時間等信息內容進行xpath語法分析如下:

          職位名稱: //td[@class='l square']/a/text()

          鏈 接: //td[@class='l square']/a/@href

           職位類別://tr[@class='odd']/td[2]/text()|//tr[@class='even']/td[2]/text()

           人 數://tr[@class='odd']/td[3]/text()|//tr[@class='even']/td[3]/text()

           地 點://tr[@class='odd']/td[4]/text()|//tr[@class='even']/td[4]/text()

          發布時間://tr[@class='odd']/td[5]/text()|//tr[@class='even']/td[5]/text()


2. url分析

       scrapy 是一個為了爬取網站數據,提取結構性數據而編寫的應用框架,我們只需要實現少量代碼,就能夠快速的抓取到數據內容。

        首先程序將需要發送請求的url(requests)經ScrapyEngine(引擎)交給Scheduler(調度器)。在Scheduler(排序,入隊)處理后,經ScrapyEngine,DownloaderMiddlewares交給Downloader,再向互聯網發送請求,並接收下載響應(response)。

        最后,將響應(response)經ScrapyEngine,SpiderMiddlewares(可選)交給Spiders的同時。Spiders處理response,提取數據並將數據經ScrapyEngine交給ItemPipeline保存,提取url重新經ScrapyEngine交給Scheduler進行下一個循環。直到無Url請求程序停止結束。


二、項目工具

實驗軟件:Python 3.7.1     、 JetBrains PyCharm 2018.3.2       、      其它輔助工具:略


三、項目過程

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

clip_image002[6]

圖3-1 程序邏輯框架圖


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

clip_image002[8]

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


clip_image002[10]

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

(三)爬蟲運行結果

clip_image002[12]

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


clip_image002[14]

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


四、項目心得

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

1、 解決圖3-4的程序錯誤,只需在gec.py的文件中進行導入操作:from Tencent.items import TencentItem 即可。對於解決如圖4-1所示的內容,請如圖5-1所示:

clip_image002[16]

圖4-1 程序錯誤糾正

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

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

4、 下載下來的網頁數據再次經過下載器中間鍵,經過引擎,經過爬蟲中間鍵傳送給爬蟲spiders 這里的下載器中間鍵是設定在請求執行后,因此可以修改請求的結果 這里的爬蟲中間鍵是設定在數據或者請求到達爬蟲之前,與下載器中間鍵有類似的功能

5、 由爬蟲spider對下載下來的數據進行解析,按照item設定的數據結構經由爬蟲中間鍵,引擎發送給項目管道itempipeline 這里的項目管道itempipeline可以對數據進行進一步的清洗,存儲等操作 這里爬蟲極有可能從數據中解析到進一步的請求request,它會把請求經由引擎重新發送給調度器shelduler,調度器循環執行上述操作





免責聲明!

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



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