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.軟體測試的定義 軟體測試就是根據需求...