Python面試重點(爬蟲篇)

2022-09-14 00:39:28 字數 3276 閱讀 7032

注意:只有必答題部分計算分值,補充題不計算分值。

注意:第31題1分,其他題均每題3分。

了解哪些基於爬蟲相關的模組?

requests、urllib、lxml、bs4、selenium

常見的資料解析方式?

re、lxml、bs4

列舉在爬蟲過程中遇到的哪些比較難的反爬機制?

引數加密、資料加密

簡述如何抓取動態載入資料?

獲取動態ip位址

向動態id傳送請求

移動端資料如何抓取?

抓取過哪些型別的資料,量級多少?

了解哪些爬蟲框架?

scrapy

談談對scrapy的了解?

如何解析出攜帶標籤的區域性頁面資料?

scrapy核心元件?

引擎(egine)排程器(scheduler)爬蟲(spiders)專案管道(item piplines)爬蟲中介軟體(spider middlewares)

scrapy中介軟體的應用?

如何實現全站資料爬取?

如何檢測**資料更新?

分布式爬蟲實現原理?

如何提公升爬取資料的效率(非同步爬蟲)

列舉你接觸的反爬機制?

ua檢測、封ip、js混淆、引數加密、資料加密

什麼是深度優先和廣度優先(優劣)

scrapy如何實現持久化儲存

存檔案、存資料庫

談談對crawlspider的理解,如何使用其進行深度爬取

如何實現資料清洗?

了解過機器學習嗎?

在爬蟲中為什麼需要是用selenium?selenium和爬蟲之間的關聯是什麼?

列舉你所熟知的selenium模組中的常用方法及其作用

解釋在多工非同步協程中事件迴圈(loop)的作用是什麼?

多工非同步協程是如何實現非同步的?

基於aiohttp模組非同步網路請求實現資料爬取及資料解析

特殊函式:如果async修飾了乙個函式的定義,那麼該函式就變成了乙個特殊函式,

特殊之處:特殊函式被呼叫後函式內部實現語句不會被立即執行 

該函式呼叫之後會返回乙個協程物件   

協程物件:特殊函式呼叫後可以返回乙個協程物件

協程 == 特殊函式

任務物件:對協程物件的進一步封裝,就是乙個高階協程物件

任務物件 == 協程物件 == 特殊的函式

繫結**:task.add_done_callback(parse) #parse就是乙個**函式

parse的定義:

parse必須又乙個引數,該引數表示的就是**函式對應的任務物件

task.result(): 就是特殊函式的的返回值

事件迴圈物件:可以讓特殊函式內部的語句執行

該物件內部必須註冊的是任務物件,當事件迴圈開啟後其內部註冊的任務物件就可以基於非同步被執行

驗證碼如何處理?

selenium,超級鷹

scrapy 和 scrapy-redis 有什麼區別?

scrapy 是乙個通用的爬蟲框架,其功能比較完善,可以幫你迅速的寫乙個簡單爬蟲,並且跑起來。scrapy-redis是為了更方便地實現scrapy分布式爬取,而提供了一些以redis為基礎的元件

說一說開啟瀏覽器訪問 www.baidu.com

獲取到結果,整個流程。

1.網域名稱解析成ip

2.與目的主機進行tcp連線(三次握手)

3.傳送和接收資料

列出你知道 header 的內容以及資訊

簡述scrapy的去重原理?

排程器(scheduler)用來接受引擎發過來的請求, 壓入佇列中, 並在引擎再次請求的時候返回. 可以想像成乙個url的優先順序佇列, 由它來決定下乙個要抓取的**是什麼, 同時去除重複的**

下列敘述中錯誤的是:(1分)

a.棧是線性結構b.佇列是線性結構

c.線性列表是線性結構d.二叉樹是線性結構

簡述前序、中序、後續遍歷?

跟左右左跟右

左右跟寫**:實現乙個氣泡排序。

def sort(alist):

length = len(alist)

for j in range(length-1)

for i in range(length-1-j):

if alist[i] > alist[i+1]:

alist[i],alist[i+1] = alist[i+1],alist[i]

return alist

alist = [3,8,5,2,0,7,6]

print(sort(alist))

寫**:實現乙個快速排序。

def sort(alist,left,right):

low = left

hight = right

if low < high:

return

mid = alist[low]

while low < high:

while low < high:

if alist[high] < mid:

alist[low] = alist[high]

break

else:

high -= 1

while low < high:

if alist[low] < mid:

low += 1

else:

alist[high] = alist[low]

break

if low == high:

alist[low] = mid

sort(alist,left,low-1)

sort(alist,high+1,right)

return alist

列舉常見用的git命令?

你們公司/團隊用怎麼做的協同開發?

公司如何做**review?誰來做?

線上**如果出現bug如何解決?

git rebase的作用?

Python面試題爬蟲篇 附答案

注意 第31題1分,其他題均每題3分。1,了解哪些基於爬蟲相關的模組?網路請求 urllib,requests,aiohttp 資料解析 re,xpath,bs4,pyquery selenium js逆向 pyexcjs 2,常見的資料解析方式?re lxml bs4 3,列舉在爬蟲過程中遇到的哪...

爬蟲面試python

1.什麼是爬蟲 2.什麼是url 3.scrapy的優缺點 缺點 基於 python 的爬蟲框架,擴充套件性比較差,不夠靈活.4.http和https的區別 5.https如何進行資料傳輸 6.get和post請求的區別 get請求和post請求都是tcp鏈結,本質上並無區別,但是由於http的規定...

Python爬蟲拓展篇

以上內容,不要求全部掌握,但是掌握的越多,那麼你的重要性就越高 二 關於python面試的四點,你做到就萬事大吉了!因為面試的是python爬蟲崗位,面試官大多數會考察面試者的基礎的python知識,包括但不限於 0 python2.x與python3.x的區別 1 python的裝飾器 2 pyt...