1. 程式人生 > 實用技巧 >2020最新最全Python面試題整理(三)

2020最新最全Python面試題整理(三)

1 常見的HTTP方法有哪些?
GET:請求指定的頁面資訊,返回實體主體;
HEAD:類似於get請求,只不過返回的響應中沒有具體的內容,用於捕獲報頭;
POST:向指定資源提交資料進行處理請求(比如表單提交或者上傳檔案),。資料被包含在請求體中。
PUT:從客戶端向服務端傳送資料取代指定的文件的內容;
DELETE:請求刪除指定的頁面;
CONNNECT:HTTP1.1協議中預留給能夠將連線方式改為管道方式的代理伺服器;
OPTIONS:允許客戶端檢視伺服器的效能; TRACE:回顯伺服器的請求,主要用於測試或者診斷。

2 說一說redis-scrapy中redis的作用?
它是將scrapy框架中Scheduler替換為redis資料庫,實現佇列管理共享。

優點:

可以充分利用多臺機器的頻寬;
可以充分利用多臺機器的IP地址。

3 遇到的反爬蟲策略以及解決方法?
通過headers反爬蟲:自定義headers,新增網頁中的headers資料。
基於使用者行為的反爬蟲(封IP):可以使用多個代理IP爬取或者將爬取的頻率降低。
動態網頁反爬蟲(JS或者Ajax請求資料):動態網頁可以使用 selenium + phantomjs 抓取。
對部分資料加密處理(資料亂碼):找到加密方法進行逆向推理。

4 如果讓你來防範網站爬蟲,你應該怎麼來提高爬取的難度 ?
判斷headers的User-Agent;
檢測同一個IP的訪問頻率;
資料通過Ajax獲取;

爬取行為是對頁面的原始檔爬取,如果要爬取靜態網頁的html程式碼,可以使用jquery去模仿寫html。

5 scrapy分為幾個組成部分?分別有什麼作用?
分為5個部分;Spiders(爬蟲類),Scrapy Engine(引擎),Scheduler(排程器),Downloader(下載器),Item Pipeline(處理管道)。

Spiders:開發者自定義的一個類,用來解析網頁並抓取指定url返回的內容。
Scrapy Engine:控制整個系統的資料處理流程,並進行事務處理的觸發。
Scheduler:接收Engine發出的requests,並將這些requests放入到處理列隊中,以便之後engine需要時再提供。

Download:抓取網頁資訊提供給engine,進而轉發至Spiders。
Item Pipeline:負責處理Spiders類提取之後的資料。 比如清理HTML資料、驗證爬取的資料(檢查item包含某些欄位)、查重(並丟棄)、將爬取結果儲存到資料庫中

為了可以給大家提出更多的學習建議,這是我建立的Python學習qun:前226,中間的是745,後面三個數是469。都是自學成功並且成功就業的,在彼此的溝通可以我們可以得到很多學習經驗,學習始終靠自己,當你掌握了一個好的學習方法,系統的學習方式,你會發現其實學習Python並沒有那麼難,有問題在qun裡隨時問我,qun內含有不少的資學xi資料,且工作不忙的時候幫助大家解答問題。在這裡插入圖片描述