前言
又到一年一度的“金三銀四”求職高峰期。對于爬蟲工程師來說,面試前做好充足準(zhǔn)備,才能事半功倍。今天給小伙伴們分享5道Python爬蟲面試提及回答。
問題1:你寫爬蟲的時候都遇到過什么反爬蟲措施,你最終是怎樣解決的?
通過headers反爬蟲:解決策略,偽造headers,基于用戶行為反爬蟲:動態(tài)變化去爬取數(shù)據(jù),模擬普通用戶的行為, 使用IP代理池爬取或者降低抓取頻率,或 通過動態(tài)更改代理ip來反爬蟲,基于動態(tài)頁面的反爬蟲:跟蹤服務(wù)器發(fā)送的ajax請求,模擬ajax請求,selnium,和phtamjs?;?使用selenium + phantomjs 進行抓取抓取動態(tài)數(shù)據(jù),或者找到動態(tài)數(shù)據(jù)加載的json頁面。
驗證碼 :使用打碼平臺識別驗證碼
數(shù)據(jù)加密:對部分數(shù)據(jù)進行加密的,可以使用selenium進行截圖,使用python自帶的pytesseract庫進行識別,但是比較慢最直接的方法是找到加密的方法進行逆向推理。
問題2:你寫爬蟲的時候 使用的什么框架 選擇這個框架的原因是什么?
scrapy。
優(yōu)勢:可以實現(xiàn)高并發(fā)的爬取數(shù)據(jù), 注意使用代理,提供了一個爬蟲任務(wù)管理界面, 可以實現(xiàn)爬蟲的停止,啟動,調(diào)試,支持定時爬取任務(wù),代碼簡潔
劣勢:1.可擴展性不強。2.整體上來說: 一些結(jié)構(gòu)性很強的, 定制性不高, 不需要太多自定義功能時用pyspider即可, 一些定制性高的,需要自定義一 些 功能時則使用Scrapy。
問題3:請簡要介紹下scrapy框架,為什么要使用scrapy框架?scrapy框架有哪些優(yōu)點?scrapy框架有哪幾個組件/模塊?簡單說一下工作流程。
- scrapy的去重原理(指紋去重到底是什么原理)
- scrapy中間件有幾種類,你用過哪些中間件*
- scrapy中間件再哪里起的作用
- scrapy實現(xiàn)分布式抓取簡單點來說
- 分布式的去重原理
- 海量數(shù)據(jù)的去重原理
問題5:為什么會用到代理?
一些網(wǎng)站會有相應(yīng)的反爬蟲措施,例如很多網(wǎng)站會檢測某一段時間某個IP的訪問次數(shù),如果訪問頻率太快以至于看起來不像正常訪客,它可能就會會禁止這個IP的訪問。所以我們需要設(shè)置一些代理服務(wù)器,每隔一段時間換一個代理,就算IP被禁止,依然可以換個IP繼續(xù)爬取。
問題6:驗證碼處理
1. 登陸驗證碼處理
圖片驗證碼:先將驗證碼圖片下載到本地,然后使用云打碼識別;
滑動驗證碼:使用selenium模擬人工拖動,對比驗證圖片的像素差異,
2. 爬取速度過快出現(xiàn)的驗證碼處理
設(shè)置setting.py中的DOWNLOAD_DELAY,降低爬取速度;
用xpath獲取驗證碼關(guān)鍵字,當(dāng)出現(xiàn)驗證碼時,識別驗證碼后再繼續(xù)運行。
3. 如何用機器識別驗證碼**
對接打碼平臺
對攜帶驗證碼的頁面數(shù)據(jù)進行抓取
將頁面中的驗證碼進行解析, 將驗證碼圖片下載到本地
將驗證碼圖片提交給打碼平臺進行識別, 返回識別后的結(jié)果
總結(jié)
希望大家在以上回答的基礎(chǔ)上,盡可能的做到舉一反三。除此之外,你在面試時還遇到過什么問題呢?歡迎在評論留言。未來,小編將不定時為大家整理爬蟲面試題。最后,大家一定要在合法合規(guī)的情況下進行數(shù)據(jù)采集。
云立方網(wǎng)產(chǎn)品導(dǎo)航: 動態(tài)撥號vps 服務(wù)器租用 撥號服務(wù)器 |