基礎理論知識(五)

2021-08-18 12:48:54 字數 4049 閱讀 3968

1.%s,%d,%f,%.2f的作用分別是什麼?(4分)

%s 通用佔位符   %d 整數型別佔位符  %f 小數佔位符  %.2f 保留兩位小數

2.檔案讀寫的三個基本步驟是什麼?(3分) open(『test.txt』,『w』)開啟檔案時,如果檔案不存在會有什麼結果?(1分) open(『test.txt』,『r』)開啟檔案時,如果檔案不存在會有什麼結果?(1分)

三個步驟:1>開啟檔案;2>讀取或寫入資料;3>關閉檔案。

open(『test.txt』,『w』):如果檔案不存在,會新建立乙個檔案;

open(『test.txt』,『r』):如果檔案不存在,會報錯,出現異常;

3.*args和**args這兩種引數的區別是什麼?(4分)

*args是乙個元組

**args是乙個字典

4.os.path.exists()、os.remove()、os.mkdir()、os.chdir()四個函式的作用分別是什麼?(4分)

os.path.exists():判斷乙個檔案是否存在

os.remove():移除乙個檔案

os.mkdir():建立乙個資料夾

os.chdir():切換工作目錄

5.類中的__init__()函式的作用是什麼?(2分) 在呼叫類中的屬性和方法時,通過什麼方式進行呼叫?(2分)

初始化函式,用於初始化物件的屬性。

通過 「物件名.屬性名」 的形式呼叫。

6.python中包(package)的標誌是什麼?(2分) 包的作用是什麼?(2分)

標誌是包含__init__.py檔案。

作用是方便跨檔案引用。

7.json模組中dumps()和loads()函式的作用是什麼?(4分)

dumps():將乙個python物件,轉化成乙個json字串。

loads():將json字串,轉化為乙個python物件。

8.get請求方式和post請求方式的區別是什麼?(5分)

1> get請求將資料拼接在url後面;

2> post請求將資料放入請求體中;

3> get請求只能傳遞少量資料;

4> post請求可以傳遞大量資料;

5> get請求沒有post請求安全,get請求資料容易暴露;

9.在發起網路請求時必須通過user-agent指定瀏覽器標識嗎?(2分) 為什麼要指定user-agent? (2分)

不是必須的。

指定user-agent是為了讓爬蟲偽裝成瀏覽器進行爬取資料,防止無法獲取資料。

10.解析網頁資料有幾種方式,分別需要使用哪些庫?(3分)

正規表示式   re    requests

beautifulsoup   bs4 beautifulsoup

xpath   from lxml import etree

11.正規表示式中的.*和.*?的區別是什麼? (2分)

.*表示貪婪匹配

.*?表示非貪婪匹配

12.正規表示式match()和search()函式的區別是什麼?(2分)

match(): 從字串的開頭匹配字元。

search():從字串的任意位置匹配字元。

13.簡述scrapy框架爬蟲的資料流向過程。(6分)

(1)引擎經過spider中介軟體從spider獲得第乙個request請求,將請求傳送給排程器

(2)引擎從排程器中獲取request請求

(5)引擎通過spider中介軟體將response物件傳遞給spider處理

(6)spider通過spider中介軟體返回乙個item或者request物件給引擎

(7)引擎接收的如果是item則交給itempipeline,如果是request請求,則交給排程器繼續迴圈

14. downoadmiddleware的作用是什麼(2分)?如何自定義downloadmiddleware,描述需要實現的函式。(2分)

負責對request請求和response響應進行處理

def process_request()和def process_response()函式

15. itempipeline的作用是什麼(1分)?如何自定義itempipeline,描述需要實現的函式。(2分)

對item中的資料進行最終的儲存處理

def process_item()函式

16.描述scrapy的url去重原理。(3分)

1>將url生成的request物件生成指紋物件;

2>將指紋物件放入set()集合當中;

3>根據dont_filter=true值,每次請求前都去set()集合中判斷該請求的指紋資訊是否存在,如果存在則跳過;

17.常見的css選擇器有哪幾種,簡要描述出來。(4分)

id,class,nth-child(),nth-of-type,屬性選擇器,父子選擇器

18.簡述scrapy框架中如何結合selenium+phantomjs達到動態獲取資料的目的。(3分)

19.簡述scrapy建立專案、建立爬蟲、啟動專案的命令,及如何使用斷點進行除錯。(4分)

scrapy startproject 專案名

scrapy genspider 爬蟲檔名 網域名稱

scrapy crawl 爬蟲檔名

建立乙個debug檔案:

from scrapy.cmdline import execute

execute([『scrapy』,』crawl』,』爬蟲檔名』])

20.簡述反爬蟲機制及應對措施。(4分)

1>判斷請求頭的headers是不是以python開頭的,如果是則禁止訪問

應對:自定義請求頭

2>判斷多次請求是否來自同一ip,如果頻率足夠快切來自同一ip則對ip進行**

應對:使用ip**,最好使用多個ip存放在列表中,每次請求隨機選取乙個

3>判斷多次高頻率請求是否來自同乙個瀏覽器,如果是則**

應對:可以自定義多個請求頭隨機選取,或者如果使用scrapy爬取資料可以使用fake_useragent庫

21.類的繼承有哪些優勢。(2分)

1>子類可以繼承父類的所有屬性和方法;

2>子類可以重寫父類的方法;

22. scrapy自身支援分布式嗎(2分)?描述解決scrapy的分布式爬蟲的重點。(2分)

不支援解決重點:排程器中用於存放request物件的佇列和用於去重的set集合,不能再使用scrapy中預設在記憶體中建立的request佇列和set,需要設定成所有scrapy都能夠訪問的公共佇列和set。

23.成功鏈結遠端的mysql資料庫,簡單描述怎麼配置?(4分)

1>修改host為遠端ip的位址;

2>需要建立乙個擁有遠端登入許可權的使用者;

24.簡述cookie是什麼,有什麼作用,如何使用cookie?(6分)

cookie 是瀏覽器儲存資料的一種方式,可以用來儲存使用者的登入狀態、訪問記錄等資料

利用cookie記錄當前使用者的登入狀態、和伺服器的session做互動時使用,可以做到使用者登入之後、以後再訪問這個**時、無需再次登入

傳送請求時,可以將cookie放在建立請求物件的函式中,每次發起請求、都將這個cookie攜帶,這樣可以做到免登陸訪問**

25.說出response.xpath(「//div[contains(@class, 『red』)]/a/@href」)的含義。(2分)

找到class名包含red的div下的a標籤的href屬性值

26.乙個請求中主要包含哪些內容?(3分)乙個響應中主要包含哪些內容?(3分)

請求:請求行,請求頭,請求體

響應:響應頭,響應行,響應體

BGP基礎理論知識

bgp 邊界閘道器路由協議,管理as之間路由傳遞 距離向量型,分布式計算 採用tcp來傳遞路由資訊,埠號179,保障可靠性,但是這樣做了就會喪失鄰居自動發現的功能,只能單播建立鄰居,並且可以非直連建立鄰居關係。bgp設計是用來處理as之間的路由協議重點處理as之間的路由,as之內的路由不作為重點,所...

爬蟲 基礎理論知識(一)

4.所有的目標url全部請求完畢,爬蟲結束 搜尋引擎需要遵守robot協議 搜尋引擎的缺點 b.搜尋引擎搜尋的結果千篇一律,沒有辦法根據特定的使用者,獲取特定的資料 c.搜尋引擎搜尋結果99 並沒用 目的 實現不同的系統互聯之間的資料通訊,實現資料的傳輸 2.表示層 3.會話層 4.傳輸層 5.網路...

軟體測試基礎理論知識

軟體測試 描述一種用來促進鑑定軟體的正確性 完整性 安全性和質量的過程。換句話說,軟體測試是一種實際輸出與預期輸出之間的審核或者比較過程。軟體測試的經典定義是 在規定的條件下對程式進行操作,以發現程式錯誤,衡量軟體質量,並對其是否能滿足設計要求進行評估的過程。1.軟體測試的定義 軟體測試就是根據需求...