Python網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集 試題及答案 共2套_第1頁
Python網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集 試題及答案 共2套_第2頁
Python網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集 試題及答案 共2套_第3頁
Python網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集 試題及答案 共2套_第4頁
Python網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集 試題及答案 共2套_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Python網(wǎng)絡(luò)爬蟲與數(shù)據(jù)采集試題選擇題(每題2分)1、下列哪個選項不屬于HTTP協(xié)議的請求方法?(B)GETPUSHPUTPOST下列哪個HTML標(biāo)簽可以設(shè)置超鏈接?(C)<p><div><a><h1>正則表達(dá)式“\d{3}-\d{8}|\d{4}-\d{8}”能匹配下列哪個字符串?(A)010-123456780432-12345670101234567804321234568Requests庫中,可以查看響應(yīng)狀態(tài)碼的方法是(D)textencodingcookiesstatus_code關(guān)于JavaScript說法不正確的是(B)JavaScript是一種面向?qū)ο蟆討B(tài)類型的解釋性語言JavaScript主要運行在網(wǎng)站服務(wù)器上瀏覽器中的頁面是在HTML的基礎(chǔ)上經(jīng)過JavaScript加工處理后生成的JavaScript可以寫在HTML的<script>標(biāo)簽中下列NumPy方法中,能夠?qū)蓚€二維數(shù)組橫向拼接的是(D)matinvvstackhstack以下不是Scrapy框架組件的是(C)????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????EngineSchedulerProcesserPipeline在Scrapy框架中,Downloader下載頁面內(nèi)容后結(jié)果經(jīng)Engine發(fā)送到哪個組件?????????????????????????????????????????????????(A)???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????SpidersPipelineScheduler以上均不正確Scrapy項目的settings.py文件中,指定log的最低級別的設(shè)置項是(C)BOT_NAMEDOWNLOAD_DELAYLOG_LEVELUSER_AGENTRequestHeader中指定是否需要持久連接的是(D)AcceptRefererRangeConnection判斷題(每題2分)Python字符串操作中的strip方法可以去掉字符串左、右側(cè)的空格(√)python_whois庫可以查詢網(wǎng)站所有者的相關(guān)信息(√)正則表達(dá)式中“$”匹配前面的子表達(dá)式0次或1次(x)SQL是一種小巧易用的輕量型關(guān)系數(shù)據(jù)庫系統(tǒng)(x)pandas中的Series數(shù)據(jù)類型的特點是相比普通的一維數(shù)組能存放更多數(shù)據(jù)(x)Matplotlib可以用于繪制圖表。(√)Selenium是一個專門用于開發(fā)Python爬蟲的瀏覽器(x)Selenium中模擬鍵盤輸入的函數(shù)是send_keys()(√)Python自帶的單元測試模塊是unittest(√)某同學(xué)認(rèn)為自己開發(fā)的爬蟲對網(wǎng)站的影響很小,可以忽略robots.txt中的內(nèi)容(x)三、填空題(每題2分)Robots協(xié)議旨在讓網(wǎng)站訪問者(或訪問程序)了解該網(wǎng)站的信息抓取限制。HTTP請求中的POST方法向指定資源提交數(shù)據(jù)進(jìn)行處理請求。正則表達(dá)式中表示匹配任意數(shù)字的是“[0-9]”。Chrome開發(fā)者工具中的Sources面板主要用來調(diào)試JavaScript。網(wǎng)絡(luò)API使用約定XML和JSON格式呈現(xiàn)數(shù)據(jù)。Redis是一個開源的鍵值對存儲數(shù)據(jù)庫。Selenium可以操縱瀏覽器進(jìn)行一些類似于普通用戶的行為。瀏覽器一般把Cookie數(shù)據(jù)放在HTTP請求中的Header數(shù)據(jù)中。PyQuery可以類似jQuery的形式解析網(wǎng)頁,并支持CSS選擇器。驗證碼的英文名稱縮寫為CAPTCHA。四、簡答題(每題4分)1.請使用正則表達(dá)式匹配下列字符串(1)只能輸入數(shù)字。(2)只能輸入非零的正整數(shù)(3)只能輸入長度為3的字符(4)只能輸入由26個大寫英文字母組成的字符串(5)只能輸入由26個英文字母組成的字符串(1)^[0-9]*$(2)^"+?[1-9][0-9]*$(3)^.{3}$(4)^[A-Z]+$(5)^[A-Za-z]+$(每點1分)請簡述HTTP請求中的GET、HEAD、POST、PUT和DELETE方法(4分)(1)GET:指定的頁面信息,并返回實體主體。(2)HEAD:類似GET請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于獲取報頭。(3)POST:向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中。POST請求可能會導(dǎo)致新的資源的建立和/或已有資源的修改。(4)PUT:從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。(5)DELETE:請求服務(wù)器刪除指定的頁面。(每點1分)請舉例說明5種反爬蟲的方式(4分)識別RequestHeaders:通過驗證headers中的User-Agent信息來判定當(dāng)前訪問是否來自常見的界面瀏覽器。更復(fù)雜的headers驗證則會要求驗證Referer、Accept-encoding等信息。驗證碼:辨別計算機程序和人類用戶的不同,廣泛用于限制異常訪問。限制或封禁IP地址:判定為爬蟲后限制甚至封禁來自當(dāng)前IP地址的訪問。更改服務(wù)器返回的信息:通過加密信息、返回虛假數(shù)據(jù)等方式保護(hù)服務(wù)器返回的信息。賬號限制:只有已登錄的賬號才能夠訪問網(wǎng)站數(shù)據(jù)。(每點1分)請簡述Scrapy包含的組件及其功能。(至少舉出5個組件)(4分)引擎(Engine):用于處理整個系統(tǒng)的數(shù)據(jù)流處理,觸發(fā)事務(wù),是框架的核心。調(diào)度器(Scheduler):用于接受引擎發(fā)送的請求,將請求放入隊列中,并在引擎再次請求的時候返回。它決定下一個要抓取的網(wǎng)址,同時擔(dān)負(fù)著網(wǎng)址去重這一重要工作。下載器(Downloader):用于下載網(wǎng)頁內(nèi)容,并將網(wǎng)頁內(nèi)容返回給爬蟲。它的基礎(chǔ)是twisted,一個Python網(wǎng)絡(luò)引擎框架。爬蟲(Spiders):用于從特定的網(wǎng)頁中提取自己需要的信息,即Scrapy中所謂的實體(Item);也可以從中提取鏈接,讓Scrapy繼續(xù)抓取下一個頁面。管道(Pipeline):負(fù)責(zé)處理爬蟲從網(wǎng)頁中抽取的實體,主要的功能是持久化信息、驗證實體的有效性、清洗信息等。當(dāng)頁面被爬蟲解析后,將被發(fā)送到管道,并經(jīng)過特定的程序來處理數(shù)據(jù)。(每點1分)5.請說明Scrapy爬蟲的工作過程?(4分)第1步,引擎打開一個網(wǎng)站,找到處理該網(wǎng)站的爬蟲,并向該爬蟲請求第一個要抓取的URL。第2步,引擎從爬蟲中獲取到第一個要抓取的URL并在調(diào)度器中以requests調(diào)度。第3步,引擎向調(diào)度器請求下一個要抓取的URL。第4步調(diào)度器返回下一個要抓取的URL給引擎,引擎將URL通過下載器中間件轉(zhuǎn)發(fā)給下載器。一旦頁面下載完畢,下載器會生成一個該頁面的Responses,并將其通過下載器中間件發(fā)送給引擎。引擎從下載器中接收到Responses并通過爬蟲中間件發(fā)送給爬蟲處理。之后爬蟲處理Responses并返回抓取的Item及發(fā)送(跟進(jìn)的)新的Requests給引擎。引擎將抓取的Item傳遞給管道,將(爬蟲返回的)Requests傳遞給調(diào)度器。重復(fù)第2步開始的過程直到調(diào)度器中沒有更多的Requests,最終引擎關(guān)閉網(wǎng)站。五、應(yīng)用題(20分)1.請使用Matplotlib繪制[-π,π]區(qū)間內(nèi)的余弦函數(shù)圖像,要求曲線顏色為紅色。解答:frommatplotlibimportpyplotimportnumpyasnpx=np.linspace(-np.pi,np.pi)pyplot.plot(x,np.cos(x),color='red')pyplot.show()2.請使用Scrapy框架編寫Python程序,爬取豆瓣網(wǎng)首頁()上所有a標(biāo)簽的文字內(nèi)容。解答:#Items.pyclassTextItem(scrapy.Item):text=scrapy.Field()#DoubanSpider.pyimportscrapyfromscrapy.selectorimportSelectorfrom..itemsimportTextItemclassDoubanspiderSpider(scrapy.Spider):name='DoubanSpider'allowed_domains=['']start_urls=['/']defparse(self,response):item=TextItem()hltext=response.xpath('//a/text()').extract()print("Textis"+''.join(hltext))item['text']=hltextreturnitem試題及答案1.Python爬蟲的作用是什么?(B)A.爬取網(wǎng)頁上的圖片B.爬取網(wǎng)頁上的文本C.爬取網(wǎng)頁上的視頻D.爬取網(wǎng)頁上的音頻2.以下哪個不是Python爬蟲常用的庫?(D)A.requestsB.BeautifulSoupC.ScrapyD.Pygame3.以下哪個不是HTTP協(xié)議中的請求方法?(D)A.GETB.POSTC.DELETED.UPDATE4.以下哪個正則表達(dá)式可以匹配所有以數(shù)字開頭的字符串?(A)A.^\d+$B.^\d*$C.^\d+$D.^\d{1,}$5.以下哪個不是BeautifulSoup庫中常用的解析器?(D)A.lxmlB.html.parserC.xmlD.json6.以下哪個XPath表達(dá)式可以選取所有class屬性為"example"的元素?(A)A.//*[@class="example"]B.//*[class="example"]C.//*[@class=="example"]D.//*[@*]7.以下哪個不是Python網(wǎng)絡(luò)爬蟲的常用爬取策略?(C)A.深度優(yōu)先策略B.廣度優(yōu)先策略C.貪心策略D.隨機策略8.以下哪個不是Python網(wǎng)絡(luò)爬蟲的常用反爬機制?(D)A.IP代理池B.User-Agent偽裝C.驗證碼識別D.數(shù)據(jù)加密9.以下哪個不是Python網(wǎng)絡(luò)爬蟲的常用反反爬機制?(C)A.動態(tài)IP代理池B.隨機User-Agent偽裝C.模擬登錄驗證機制D.數(shù)據(jù)解密10.Python爬蟲中常用的數(shù)據(jù)處理工具有哪些?(D)A.pandas庫B.numpy庫C.matplotlib庫D.以上所有在字符串前添加r可使字符串不經(jīng)過轉(zhuǎn)義(√)可以直接通過BeautifulSoup或tag對象實現(xiàn)BeautifulSoup中find_all()方法的功能(√)HTTP所有狀態(tài)碼的第一個數(shù)字代表了響應(yīng)的五種狀態(tài)之一(√)HTTP狀態(tài)碼中,200表示請求已成功,數(shù)據(jù)隨此響應(yīng)返回(√)在XPath中,希望選取此節(jié)點的所有子節(jié)點,應(yīng)該使用”//”(√)在XPath中,希望選取所有名稱為”title”的子節(jié)點,應(yīng)該使用”//title”(√)在XPath中,希望選取所有名稱為title且屬于bookstore元素的元素,應(yīng)該使用”//bookstore/title”(√)在XPath中,希望選取所有價格大于或等于30且小于40的書應(yīng)該使用”//book[price>=30andprice<40]”(√)正則表達(dá)式中,使用”a.*”來匹配任意以字母a開頭的字符串(√)BeautifulSoup庫可以通過屬性名和屬性值來查找HTML或XML文件中的元素,比如使用soup.find_all(attrs={"class":"book"})來查找所有屬性名為book的元素,返回值是一個列表(√)在瀏覽器中打開網(wǎng)站后,在網(wǎng)站首頁的地址后面添加/robots.txt,如果網(wǎng)站設(shè)置了訪問許可,按回車就可以看到網(wǎng)站的robots

協(xié)議,即

robots.txt

文件內(nèi)容。Web頁面它具有一定的結(jié)構(gòu),即由HTML標(biāo)簽構(gòu)成的樹型結(jié)構(gòu)。HTTP狀態(tài)碼是用來表示網(wǎng)頁服務(wù)器HTTP響應(yīng)狀態(tài)的3位數(shù)字代碼。狀態(tài)碼包含了五種類別,即消息、成功、重定向、請求錯誤和服務(wù)器錯誤.404代表“NOTFOUND”,認(rèn)為網(wǎng)頁已經(jīng)失效;503代表“ServiceUnavailable”,認(rèn)為網(wǎng)頁臨時不可訪問;403代表“Forbidden”,認(rèn)為網(wǎng)頁目前禁止訪問;301代表是“MovedPermanently”,認(rèn)為網(wǎng)頁重定向至新url。Requests模塊中,headers參數(shù)的作用是模擬瀏覽器若想要讀寫模式打開文件,應(yīng)該使用a+Cooike是客戶端的,數(shù)據(jù)保存在客戶端;Session是服務(wù)器端的,數(shù)據(jù)保存在服務(wù)器。使用matplotlib繪制散點圖,使用的函數(shù)是scatter()html標(biāo)簽從閉合的角度可以分為閉合標(biāo)簽與空標(biāo)簽。按照鏈接的存在方式不同,分為動態(tài)超鏈接和靜態(tài)超鏈接。什么是爬蟲?爬蟲是一種按照一定的規(guī)則,自動地抓取互聯(lián)網(wǎng)上網(wǎng)頁中相應(yīng)信息,然后把抓取的信息存儲到自己的計算機上的程序或腳本。爬蟲的流程是什么?爬蟲的流程一般包括發(fā)送請求、解析響應(yīng)、存儲數(shù)據(jù)三個步驟。Python中常用的爬蟲庫有哪些?常用的爬蟲庫有urllib、Requests、BeautifulSoup、Scrapy等。寫爬蟲是用單線程好還是多線程好?為什么?多線程。IO密集型任務(wù),多線程能夠有效提升效率(單線程下有IO操作會進(jìn)行IO等待,造成不必要的時間浪費,而開啟多線程能在線程A等待時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論