請問像攜程網這種網站怎么爬???
掃除運行Scrapy爬蟲程序的bug之后,現在便可以開始進行編寫爬蟲邏輯了。在正式開始爬蟲編寫之前,在這里介紹四種小技巧,可以方便我們操縱和調試爬蟲。
一、建立main.py文件,直接在Pycharm下進行調試
很多時候我們在使用Scrapy爬蟲框架的時候,如果想運行Scrapy爬蟲項目的話,一般都會想著去命令行中直接執行命令“scrapy crawl crawler_name”,其中crawler_name指的是爬蟲的名字,在一開始創建Scrapy爬蟲模板的時候就指定了的,而且在該爬蟲項目中具有唯一性。但是每次跑到命令行下去執行,看交互的結果,有時候并不是很清晰,所以這里介紹一種方法,可以幫助大家提高開發效率,尤其是調試的時候更是顯得方便。
在與爬蟲項目的scrapy.cfg文件同級目錄下建立一個main.py文件,用于控制整個爬蟲項目的執行。
在該文件夾中寫入的代碼見下圖。其中execute函數是內嵌在scrapy中的,調用這個函數可以直接調用該Scrapy工程項目的爬蟲腳本,這個函數的執行需要在爬蟲項目的父目錄下進行。而第7行代碼的意思就是獲取當前py文件的父目錄,省去我們直接復制路徑的精力和時間,同時也方便我們將該項目放到其他的平臺上去運行,不會報路徑的錯誤。execute函數里邊的參數其實就是將Scrapy爬蟲執行命令拆分,然后分別以一個字符的方式放到了一個數組中。
之后我們直接運行這個main.py文件便可以調用Scrapy爬蟲程序了。
二、多用Debug進行調試,提高開發速度
相信用過Pycharm的小伙伴都看到過Debug這個東東,它的英文意思就是“小蟲子”,在Pycharm中的logo也是個小蟲子,像是七星瓢蟲一樣,不過很多小伙伴可能還沒有怎么用過,這里簡單的介紹給大家,希望大家日后可以多多用到,對于項目的調試十分有幫助。
在進行Debug調試之前,我們需要在我們想要調試的代碼左側進行打斷點,斷點一般是紅色的,打斷點的方式很簡單,只需要在代碼的左側點擊一下左鍵即可,如下圖所示。
斷點設置完成之后,便可以去main.py文件進行調試了。在main.py文件點擊右鍵,然后選擇“Debug ‘main’”,如下圖所示。
之后爬蟲程序便開始進行調試,并且會返回一系列結果,如下圖所示,可以方便的進行拖拽查看。同時也會在爬蟲文件中以綠色的字體進行顯示爬蟲的結果,很漂亮。
如果想退出或者停止該調試,則點擊Pycharm上方選項卡的Run,然后點擊“Stop ‘main’”即可,如下圖所示。
之后該爬蟲程序就會退出調試,恢復正常的Pycharm界面,如下圖所示。
三、設置網站robots.txt規則為False
一般的,我們在運用Scrapy框架抓取數據之前,需要提前到settings.py文件中,將“ROBOTSTXT_OBEY = True”改為ROBOTSTXT_OBEY = False。
在未改動之后settings.py文件中默認爬蟲是遵守網站的robots.txt規則的,如下圖所示。
如果遵守robots.txt規則的話,那么爬取的結果會自動過濾掉很多我們想要的目標信息,因此有必要將該參數設置為False,如下圖所示。
設置好robots.txt規則之后,我們便可以抓到更多網頁的信息。
四、利用Scrapy shell進行調試
通常我們要運行Scrapy爬蟲程序的時候會在命令行中輸入“scrapy crawl crawler_name”,細心的小伙伴應該知道上篇文章中創建的main.py文件也是可以提高調試效率的,不過這兩種方法都是需要從頭到尾運行Scrapy爬蟲項目,每次都需要請求一次URL,效率十分低。運行過Scrapy爬蟲項目的小伙伴都知道Scrapy運行的時候相對較慢,有時候因為網速不穩定,根部就無法動彈。針對每次都需要運行Scrapy爬蟲的問題,這里介紹Scrapy shell調試方法給大家,可以事半功倍噢。
Scrapy給我們提供了一種shell模式,讓我們可以在shell腳本之下獲取整個URL對應的網頁源碼。在命令行中進行運行,其語法命令是“scrapy shell URL”,URL是指你需要抓取的網頁網址或者鏈接,如下圖所示。
該命令代表的意思是對該URL進行調試,當命令執行之后,我們就已經獲取到了該URL所對應的網頁內容,之后我們就可以在該shell下進行調試,再也不用每次都執行Scrapy爬蟲程序,發起URL請求了。
通過shell腳本這種方式可以極大的提高調試的效率,具體的調試方法同爬蟲主體文件中的表達式語法一致。舉個栗子,如下圖所示。
將兩個Xpath表達式所對應的選擇器放到scrapy shell調試的腳本下,我們可以很清楚的看到提取的目標信息,而且省去了每次運行Scrapy爬蟲程序的重復步驟,提高了開發效率。這種方式在Scrapy爬蟲過程中十分常用,而且也十分的實用,希望小伙伴們都可以掌握,并且積極主動的為自己所用。
關于Scrapy爬蟲項目運行和調試的部分小技巧先分享到這里,尤其是Debug調試和Scrapy shell調試極為常用,希望小伙伴們可以多多利用起來,讓其為自己的項目服務,可以事半功倍噢~
原文鏈接:https://www.toutiao.com/i6684589023157027342/
原文鏈接:https://www.toutiao.com/i6679396332777505283/