2019最新Python爬蟲面試高頻率面試題總結(一)

今天接着跟大家總結Python爬蟲面試中常見的高頻面試題。有需要的夥伴用心看啦!

1 . Request中包含什麼呢?

1、請求方式:主要有GET和POST兩種方式,POST請求的參數不會包含在url裏面
2、請求URL
URL:統一資源定位符,如一個網頁文檔、一張圖片、一個視頻等都可以用URL來唯一確定
3、請求頭信息,包含了User-Agent(瀏覽器請求頭)、Host、Cookies信息
4、請求體,GET請求時,一般不會有,POST請求時,請求體一般包含form-data

2 . Response中包含什麼信息?

1、響應狀態:狀態碼 正常響應200 重定向
2、響應頭:如內容類型、內容長度、服務器信息、設置cookie等
3、響應體信息:響應源代碼、圖片二進制數據等等

3 . 常見的http狀態碼

200狀態碼 服務器請求正常
301狀態碼:被請求的資源已永久移動到新位置。服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。
302狀態碼:請求的資源臨時從不同的URI響應請求,但請求者應繼續使用原有位置來進行以後的請求
401狀態碼:請求要求身份驗證。 對於需要登錄的網頁,服務器可能返回此響應。
403狀態碼:服務器已經理解請求,但是拒絕執行它。與401響應不同的是,身份驗證並不能提供任何幫助,而且這個請求也不應該被重複提交。
404狀態碼:請求失敗,請求所希望得到的資源未被在服務器上發現。
500狀態碼:服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在服務器的程序碼出錯時出現。
503狀態碼:由於臨時的服務器維護或者過載,服務器當前無法處理請求。

4 . HTTP 的請求和響應都包含哪些內容

HTTP請求頭
Accept:瀏覽器能夠處理的內容類型
Accept-Charset:瀏覽器能夠顯示的字符集
Accept-Encoding:瀏覽器能夠處理的壓縮編碼
Accept-Language:瀏覽器當前設置的語言
Connection:瀏覽器與服務器之間連接的類型
Cookie:當前頁面設置的任何Cookie
Host:發出請求的頁面所在的域
Referer:發出請求的頁面的URL
User-Agent:瀏覽器的用戶代理字符串
HTTP響應頭部信息:
Date:表示消息發送的時間,時間的描述格式由rfc822定義
server:服務器名字。
Connection:瀏覽器與服務器之間連接的類型
content-type:表示後面的文檔屬於什麼MIME類型
Cache-Control:控制HTTP緩存

5 . mysql的索引在什麼情況下失效

1.如果條件中有or,即使其中有條件帶索引也不會使用(這也是爲什麼儘量少用or的原因)
要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引
2.對於多列索引,不是使用的第一部分,則不會使用索引
3.like查詢以%開頭
4.如果列類型是字符串,那一定要在條件中將數據使用引號引用起來,否則不使用索引
5.如果mysql估計使用全表掃描要比使用索引快,則不使用索引

6 . MySQL 有什麼引擎,各引擎之間有什麼區別?

主要 MyISAM 與 InnoDB 兩個引擎,其主要區別如下:
1、InnoDB 支持事務,MyISAM 不支持,這一點是非常之重要。事務是一種高級的處理方式,如在一些列增刪改中只要哪個出錯還可以回滾還原,而 MyISAM就不可以了;
2、MyISAM 適合查詢以及插入爲主的應用,InnoDB 適合頻繁修改以及涉及到安全性較高的應用;
3、InnoDB 支持外鍵,MyISAM 不支持;
4、MyISAM 是默認引擎,InnoDB 需要指定;
5、InnoDB 不支持 FULLTEXT 類型的索引;
6、InnoDB 中不保存表的行數,如 select count() from table 時,InnoDB;需要掃描一遍整個表來計算有多少行,但是 MyISAM 只要簡單的讀出保存好的行數即可。注意的是,當 count()語句包含 where 條件時 MyISAM 也需要掃描整個表;
7、對於自增長的字段,InnoDB 中必須包含只有該字段的索引,但是在 MyISAM表中可以和其他字段一起建立聯合索引;
8、清空整個表時,InnoDB 是一行一行的刪除,效率非常慢。MyISAM 則會重建表;
9、InnoDB 支持行鎖(某些情況下還是鎖整表,如 update table set a=1 where user like ‘%lee%’

7 . Scrapy優缺點:

優點:
scrapy 是異步的
採取可讀性更強的xpath代替正則
強大的統計和log系統
同時在不同的url上爬行
支持shell方式,方便獨立調試
寫middleware,方便寫一些統一的過濾器
通過管道的方式存入數據庫
缺點:基於python的爬蟲框架,擴展性比較差
基於twisted框架,運行中的exception是不會幹掉reactor,並且異步框架出錯後是不會停掉其他任務的,數據出錯後難以察覺。

8 . HTTPS 是如何實現安全傳輸數據的

客戶端(通常是瀏覽器)先向服務器發出加密通信的請求
服務器收到請求,然後響應
客戶端收到證書之後會首先會進行驗證
服務器收到使用公鑰加密的內容,在服務器端使用私鑰解密之後獲得隨機數pre-master secret,然後根據radom1、radom2、pre-master secret通過一定的算法得出session Key和MAC算法祕鑰,作爲後面交互過程中使用對稱祕鑰。同時客戶端也會使用radom1、radom2、pre-master secret,和同樣的算法生成session Key和MAC算法的祕鑰。
然後再後續的交互中就使用session Key和MAC算法的祕鑰對傳輸的內容進行加密和解密。

9 . 描述下scrapy 框架運行的機制?

從start_urls裏獲取第一批url併發送請求,請求由引擎交給調度器入請求隊列,獲取完畢後,調度器將請求隊列裏的請求交給下載器去獲取請求對應的響應資源,並將響應交給自己編寫的解析方法做提取處理:
如果提取出需要的數據,則交給管道文件處理;
如果提取出url,則繼續執行之前的步驟(發送url請求,並由引擎將請求交給調度器入隊列…),直到請求隊列裏沒有請求,程序結束。

有補充的夥伴,歡迎補充,更多的Python爬蟲相關知識也會繼續爲大家更新!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章