Python面試題爬蟲篇 附答案

2022-08-26 20:45:10 字數 4066 閱讀 2557

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

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

-網路請求:urllib,requests,aiohttp

-資料解析:re,xpath,bs4,pyquery

-selenium

- js逆向:pyexcjs

2,常見的資料解析方式?

- re、lxml、bs4

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

-動態載入的資料

-動態變化的請求引數

-js加密

-**- cookie

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

-基於抓包工具進行全域性搜尋

- 如果動態載入的資料是密文,則全域性搜尋是搜尋不到

5,移動端資料如何抓取?

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

-電商,醫療器械,彩妝,新聞資訊,金融,體育賽事(參考hao123**)

-量級:

- 最好不要超過100w。自己計算(頁數,一頁顯示多少資料)

7,了解哪些爬蟲框架?

- scrapy,pyspider

8,談談對scrapy的了解?

-功能:資料解析,持久化儲存,深度爬取,分布式,關鍵件

- 五大核心元件的作用和工作流程

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

- bs4

10,scrapy核心元件?

11,scrapy中介軟體的應用?

-作用:攔截請求和響應

- 攔截請求:設定**

12,如何實現全站資料爬取?

- 基於手動請求傳送+遞迴解析

- 基於crwalspider(linkextractor,rule)

13,如何檢測**資料更新?

- 增量式爬蟲

14,分布式爬蟲實現原理?

- 基於scrapy-redis實現的分布式。

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

-使用框架

-執行緒池,多工的非同步協程

- 分布式

16,列舉你接觸的反爬機制?

ua檢測、封ip、js混淆、引數加密、資料加密,動態載入

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

-預設情況下scrapy是深度優先。

-深度優先:占用空間大,但是執行速度快

- 廣度優先:占用空間少,執行速度慢

18,scrapy如何實現持久化儲存

-解析資料

-將解析的資料封裝到item中

-將item提交管道

-在管道中持久化儲存

- 開啟管道

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

- 鏈結提取器&規則解析器

20,如何實現資料清洗?

-清洗空值(缺失值)

-將空對應的行資料刪除.dropna

-使用近鄰值填充空值.fillna

-清洗重複值

-重複的行資料刪除:drop_duplicates()

-清洗異常值

- 一定要有乙個判定異常值的條件

21,了解過機器學習嗎?

-特徵工程

-特徵預處理

-歸一化,標準化

-特徵值化

-將非數值型的資料轉換成數值型的資料

-降維-sklean框架

-線性回歸,knn,貝葉斯

-補充:

1.樹模型:決策樹

2.整合模型:隨機森林

-深度學習框架:

- tensorflow

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

selenium和爬蟲之間的關聯是什麼?

-爬取動態載入的資料

- 模擬登入

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

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

- 可以將註冊在其內部的任務物件表示的特定操作進行非同步執行

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

-乙個任務物件就是乙個協程也是一組特定的操作,將任務物件註冊到事件迴圈中,就可以非同步的執行每一組特定的操作

- wait方法,await關鍵字

26,驗證碼如何處理?

- 打碼平台

27,scrapy 和 scrapy-redis 有什麼區別?

- scrapy-redis這個元件可以給scrapy框架提供共享的管道和排程器實現分布式爬蟲

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

獲取到結果,整個流程。

1.網域名稱解析成ip

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

3.傳送和接收資料

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

- user-agent

- connection

30,簡述scrapy的去重原理?

需要將dont_filter設定為false開啟去重,預設是false;

對於每乙個url的請求,排程器都會根據請求的相關資訊加密得到乙個指紋資訊,並且將指紋資訊和set()集合中得指紋資訊進行比對,如果set()集合中已經存在這個資料,就不在將這個request放入佇列中。如果set()集合中沒有,就將這個request物件放入佇列中,等待被排程。

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

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

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

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

跟左右

左跟右左右跟

33,寫**:實現乙個氣泡排序。

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))

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

def

sort(alist,left,right):

low =left

hight =right

if low return

mid =alist[low]

while low while low if alist[high] alist[low] =alist[high]

break

else

: high -= 1

while low if alist[low] 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

1,列舉常見用的git命令?

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

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

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

5,git rebase的作用?

PHP面試題(附答案)

1.在php中,當前指令碼的名稱 不包括路徑和查詢字串 記錄在預定義變數 1 中 而鏈結到當前頁面的的前一頁面url記錄在預定義變數 2 中 script name也可以 其它的見參考手冊 語言參考 變數 預定義變數 當前執行指令碼的絕對路徑名 d inetpub wwwroot php est.p...

kafka面試題 附答案

1.什麼是kafka kafka是分布式發布 訂閱訊息系統,它最初是由linkedin公司開發的,之後成為apache專案的一部分,kafka是乙個分布式,可劃分的,冗餘備份的永續性的日誌服務,它主要用於處理流式資料。2.為什麼要使用 kafka?為什麼要使用訊息佇列?緩衝和削峰 上游資料時有突發流...

Python 前端面試題(附答案)

為h1標籤定義樣式表 字型紅色 14畫素大大小小,內邊距4畫素,分別寫出三個層級的寫法,指出三種寫法的優先權。用js設定的值為 admin 請簡述前端技術中的id和class 的區別?在乙個網頁裡id只能使用一次。當然即使乙個id在乙個網頁內被使用多次,其css樣式仍然可以實現生效,但是一般規定w3...