最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

魔法他在召喚我

2023-02-27 19:05 作者:理工坤坤  | 我要投稿


一、單項(xiàng)選擇題(本大題共15小題,每小題2分,共30分)

1、下列不屬于常見爬蟲類型的是(?淺層網(wǎng)絡(luò)爬蟲)。

A、 淺層網(wǎng)絡(luò)爬蟲

B、 聚焦網(wǎng)絡(luò)爬蟲

C、 增量式網(wǎng)絡(luò)爬蟲????

D、 通用網(wǎng)絡(luò)爬蟲

答案: A

2、下列哪項(xiàng)不屬于解析網(wǎng)頁(yè)的庫(kù)?(?requests??)

A、 lxml

B、 beautifulsoup4

C、 正則表達(dá)式

D、 requests

答案: D

3、通過設(shè)置HTTP請(qǐng)求的哪個(gè)參數(shù)可以實(shí)現(xiàn)偽裝成瀏覽器訪問網(wǎng)頁(yè)?(headers? )

A、 params

B、 data

C、 headers

D、 timeout

答案: C

4、下列哪個(gè)函數(shù)可以實(shí)現(xiàn)合并URL?(?urljoin()?)

A、 urlpase()

B、 urlencode()

C、 urljoin()

D、 quote()

答案: C

5、下列不屬于Response對(duì)象屬性的是(?txt?)。

A、 content

B、 txt

C、 text

D、 encoding

答案: B

6、下列不屬于HTML標(biāo)簽的是(?href??)。

A、 href

B、 head

C、 a

D、 li

答案: A

7、lxml庫(kù)中選取屬性的語(yǔ)法是(?@?)。

A、 @

B、 .

C、 *

D、 //

答案: A

8、能夠在字符串“aabaaabaaaab”中匹配“aab”,而不能匹配“aaab”和“aaaab”的正則表達(dá)式為(?aa??b??)。

A、 a{1,3}b

B、 aa??b

C、 aaa??b

D、 a*?b

答案: B

9、beautifulsoup4 庫(kù)中遍歷整個(gè)HTML文件,按照條件返回所有匹配的節(jié)點(diǎn)元素的方法是(?find_all()?? )

A、 find()

B、 select()

C、 find_all()

D、 search()

答案: C

10、下列關(guān)于XPath描述錯(cuò)誤的是(?contains()方法可用于選取以特定值開頭的節(jié)點(diǎn)?)。

A、 text()方法可提取節(jié)點(diǎn)的文本內(nèi)容

B、 text()方法可用于選取包含指定文本內(nèi)容的節(jié)點(diǎn)

C、 contains()方法可用于選取以特定值開頭的節(jié)點(diǎn)

D、 and可用于選取同時(shí)包含兩種指定值的節(jié)點(diǎn)

答案: C

11、下列關(guān)于beutiflsoup4中Tag對(duì)象描述錯(cuò)誤的是(??attrs 屬性可獲取Tag對(duì)象的HTML屬性,返回值為列表形式?).

?

A、 string屬性可獲取Tag對(duì)象中的文本字符串內(nèi)容

B、 ?attrs 屬性可獲取Tag對(duì)象的HTML屬性,返回值為列表形式

C、 contents屬性可獲取Tag對(duì)象子標(biāo)簽的內(nèi)容

D、 name 屬性可獲取Tag對(duì)象的名稱

?

答案: B

12、下列關(guān)于json庫(kù)中dumps()方法描述錯(cuò)誤的是(?dumps()方法可將JSON對(duì)象寫入文件內(nèi)?)。

A、 設(shè)置indent參數(shù)為2時(shí),輸出時(shí)縮進(jìn)2個(gè)字符

B、 如果需要輸出中文字符,設(shè)置ensure_ascii 參數(shù)為True

C、 dumps()方法可將JSON對(duì)象寫入文件內(nèi)

D、 dumps()方法可生成一個(gè)字符串

?

答案: C

13、逆向分析請(qǐng)求頁(yè)面和取動(dòng)態(tài)加載數(shù)據(jù)時(shí)選擇Network面板的哪個(gè)選項(xiàng)查看JavaScript加載的文件? (? ?XHR? ? )

A、 CSS

B、 Doc

C、 XHR

D、 Media

答案: C

14、下列Selenium庫(kù)的方法中,不能通過節(jié)點(diǎn)屬性進(jìn)行多元素定位的是(?find _element _by_ name()?? ?)

A、 find _element _by_ name()?

B、 find_ elements_ by_class_name()?

C、 ?find_elements_by_name()?

D、 find_ elements_ by _id()?

答案: A

15、以下選項(xiàng)中哪一個(gè)不是正則表達(dá)式的元字符(?@? ?).

A、 $

B、 @

C、 ^

D、 *

答案: B

16、Selenium中提供了多種元素定位方法,但不包括以下選項(xiàng)中的(?find_ element by_ page()?? )

A、 find_ element_ by_ id()

B、 find_ element_ by_ xpath()?

C、 find_ element by_ page()

D、 find _element by_ class_ name()

答案: C

17、使用selenium模塊打開谷歌瀏覽器,以下選項(xiàng)中正確的是(?webdriver.Chrome()?? )

A、 webdriver.Google

B、 webdriver.Google()

C、 webdriver.Chrome?

D、 webdriver.Chrome()

答案: D

18、以下正則表達(dá)式中,屬于非貪婪匹配, 且允許出現(xiàn)0次的是(.*??)

A、 .

B、 .*

C、 .*?

D、 .+?

答案: C

19、正則表達(dá)式R[0-9]{3},能匹配出以下哪個(gè)字符串(?R093?)

A、R3

B、 R03

C、 R09

D、 R093

?

答案: D

20、MySQL數(shù)據(jù)庫(kù)默認(rèn)端口號(hào)是(?3306?)。

A、 8888

B、 27017

C、 3306

D、 6379

答案: C

21、下列哪個(gè)函數(shù)可以實(shí)現(xiàn)不同模式圖像之間的轉(zhuǎn)換。(?convert()?)

A、 show()

B、 convert()

C、 open()

D、 save()

答案: B

22<div id="wrapper">,使用selenium中的方法定位該標(biāo)簽,以下選項(xiàng)中正確的是(?find_element_by_id("wrapper")?)。

A、 find_element_by_id("wrapper")?

B、 find_element_by_id("wrapper_new ")?

C、 find_element_by_class("wrapper_new ")?

D、 以上都可以?

答案: A

23、關(guān)于open函數(shù)的操作模式,以下選項(xiàng)中哪一種既可以讀也可以寫(?a+??)。

A、 a

B、 w

C、 a+

D、 wb

答案: C

24、下列Tag對(duì)象的哪個(gè)屬性返回標(biāo)簽包含的屬性?(?attrs?? )

A、 name

B、 contents

C、 attrs

D、 string

答案: C

25、下列關(guān)于urlopen()函數(shù)的說(shuō)法錯(cuò)誤的是(?不設(shè)置data參數(shù)時(shí),以POST方式發(fā)送請(qǐng)求?)

A、 data參數(shù)是可選的

B、 可以用于對(duì)目標(biāo)URL的訪問

C、 設(shè)置data參數(shù)時(shí),以POST方式發(fā)送請(qǐng)求

D、 不設(shè)置data參數(shù)時(shí),以POST方式發(fā)送請(qǐng)求

答案: D

26、下列關(guān)于Requests庫(kù)的說(shuō)法錯(cuò)誤的是(?是一個(gè)Python標(biāo)準(zhǔn)庫(kù)?)

A、 是一個(gè)Python標(biāo)準(zhǔn)庫(kù)

B、 能夠發(fā)送HTTP請(qǐng)求

C、 能夠抓取二進(jìn)制數(shù)據(jù)

D、 能夠發(fā)送HTTP請(qǐng)求頭

答案: A

27、下列關(guān)于lxml庫(kù)的說(shuō)法正確的是(?lxml是一款高性能的HTML/XML解析庫(kù)?)

A、 lxml是一個(gè)網(wǎng)絡(luò)庫(kù)

B、 lxml是一款高性能的HTML/XML解析庫(kù)

C、 僅支持利用XPath來(lái)選取節(jié)點(diǎn)

D、 lxml是一個(gè)Python的標(biāo)準(zhǔn)庫(kù)

答案: B

28、下列關(guān)于XPath的語(yǔ)法說(shuō)法錯(cuò)誤的是(?‘//’選取當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)

A、 ‘/’選取當(dāng)前節(jié)點(diǎn)的直接子節(jié)點(diǎn)

B、 ‘@’選取屬性

C、 ‘..’選取父節(jié)點(diǎn)

D、 ‘//’選取當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)

答案: D

29、下列說(shuō)法錯(cuò)誤的是(?XPath不能做多屬性過濾?)

A、 ‘//*’選取整個(gè)HTML所有的節(jié)點(diǎn)

B、 ‘//li/a’選取<li>節(jié)點(diǎn)下的所有<a>節(jié)點(diǎn)

C、 XPath不能做多屬性過濾

D、 XPath中的索引是從1開始的

答案: C

30、下列關(guān)于XPath中功能函數(shù)描述錯(cuò)誤的是(?contains( )方法可用于選取以指定值開頭的節(jié)點(diǎn)?)

A、 contains( )方法可用于選取以指定值開頭的節(jié)點(diǎn)

B、 and( )方法可用于選取同時(shí)包含兩種指定值的節(jié)點(diǎn)

C、 text( )函數(shù)可用于選取包含指定文本內(nèi)容的節(jié)點(diǎn)

D、 text( )函數(shù)可提取節(jié)點(diǎn)文本內(nèi)容

答案: A

31、在MySQL數(shù)據(jù)庫(kù)中,下列說(shuō)法錯(cuò)誤的是(?使用show database命令顯示所有數(shù)據(jù)庫(kù)?)

A、 使用show database命令顯示所有數(shù)據(jù)庫(kù)

B、 使用update命名修改數(shù)據(jù)

C、 使用delete命名刪除數(shù)據(jù)

D、 使用insert into命名插入數(shù)據(jù)

答案: A

32、下列關(guān)于Chrome 開發(fā)者工具描述錯(cuò)誤的是(?網(wǎng)絡(luò)面板無(wú)法查看HTML源碼?)

A、 元素面板可查看元素在頁(yè)面的對(duì)應(yīng)位置

B、 源代碼面板可查看HTML源碼

C、 網(wǎng)絡(luò)面板無(wú)法查看HTML源碼

D、 網(wǎng)絡(luò)面板可查看HTTP頭部信息

答案: C

33、下列關(guān)于BeautifulSoup中對(duì)象類型描述錯(cuò)誤的是(?attrs( )方法可獲取Tag對(duì)象的HTML屬性,返回值為列表形式? )

A、 name( )方法可以獲取及修改Tag對(duì)象名稱

B、 attrs( )方法可獲取Tag對(duì)象的HTML屬性,返回值為列表形式

C、 string( )方法可獲取Tag對(duì)象中的文本字符串內(nèi)容

D、 NavigableString對(duì)象無(wú)法被編輯,但可以進(jìn)行替換

答案: B

、判斷題(本大題共10小題,每小題1.5分,共15分)

1、網(wǎng)站中的robots.txt可以無(wú)視。

答案: 錯(cuò)誤

2、get方法相比post方法能攜帶更多信息。

答案: 錯(cuò)誤

3、正則表達(dá)式中.*代表匹配任意內(nèi)容。?

答案: 正確

4、Selenium的webdriver的版本必須和瀏覽器的版本相對(duì)應(yīng)。

答案: 正確

5、Selenium中模擬鼠標(biāo)點(diǎn)擊的函數(shù)是send_keys()。

答案: 錯(cuò)誤

6、requests庫(kù)中直接使用返回對(duì)象response.encoding的編碼方式解析網(wǎng)頁(yè)一定不會(huì)造成亂碼問題。

答案: 錯(cuò)誤

7、requests庫(kù)中post()函數(shù)的data參數(shù)可以接收字典、字節(jié)序列或文件對(duì)象,作為請(qǐng)求體的內(nèi)容提交給HTTP。

答案: 正確

8、在BeautifulSoup4庫(kù)中CSS選擇器'a[src*="abc"]'表示選擇其src屬性值中包含“abc”子串的所有<a>節(jié)點(diǎn)。

答案: 正確

9、在XPath語(yǔ)法中'body/div[1]'表示選取body節(jié)點(diǎn)下的第二個(gè)div子節(jié)點(diǎn)。

答案: 錯(cuò)誤

10、Tag對(duì)象的string屬性返回標(biāo)簽的文本信息,而text屬性返回標(biāo)簽下所有標(biāo)簽的文本信息。

答案: 正確

11、在Match對(duì)象中g(shù)roup()方法分組的下標(biāo)從1開始。

答案: 錯(cuò)誤

12、在dumps()方法將python數(shù)據(jù)類型轉(zhuǎn)化成JSON字符串時(shí),將ensure_ascii設(shè)置為True,就能正常輸出中文字符。

答案: 錯(cuò)誤

13、csv庫(kù)提供DIctWriter()方法用于初始化一個(gè)字典寫入對(duì)象。

答案: 正確

14、find_elements_by_name()表示通過節(jié)點(diǎn)的name屬性名定位,匹配返回第一個(gè)符合條件的節(jié)點(diǎn)。

答案: 錯(cuò)誤

15、在selenium中,通過ActionChains類初始化對(duì)象browser,這個(gè)對(duì)象會(huì)存儲(chǔ)所有用戶產(chǎn)生的行為,需要通過perform()方法執(zhí)行這些行為。

答案: 正確

16、對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行了修改,需要通過游標(biāo)對(duì)象的commit()方法提交事務(wù),才會(huì)將修改后的數(shù)據(jù)真正更新到數(shù)據(jù)庫(kù)中。

答案: 正確

17、在使用代碼連接MySQL數(shù)據(jù)庫(kù)時(shí),如果指定的數(shù)據(jù)庫(kù)還沒創(chuàng)建也可以直接連接。

答案: 錯(cuò)誤

18、在MongoDB中,可以通過find()方法查詢多條記錄,返回一個(gè)字典列表數(shù)據(jù)。

答案: 正確

19、在requests庫(kù)中,可以在發(fā)送HTTP請(qǐng)求時(shí),使用proxies參數(shù)添加代理IP。

答案: 正確

20、在Scrapy庫(kù)中,Spider是負(fù)責(zé)處理所有的Request,并按照一定的方式將其進(jìn)行整理。

答案: 錯(cuò)誤

21、在settings.py文件中的ITEM_PIPELINES的鍵值是一個(gè)數(shù)字,數(shù)字越大優(yōu)先級(jí)越高。

答案: 錯(cuò)誤

三、填空題(本大題共5小題,每小題2分,共10分)

1、HTTP響應(yīng)由__)、(__)和(__)三部分組成。

答案: 響應(yīng)狀態(tài)碼; 響應(yīng)頭; 響應(yīng)體;

2、HTTP請(qǐng)求由__? __?、? ____?四部分組成。

答案:請(qǐng)求的URL; 請(qǐng)求方法; 請(qǐng)求頭; 請(qǐng)求體

3、匹配"abe""ace" 和"ade"的正則表達(dá)式為(__

答案: a[bcd]e

4、pymongo庫(kù)使用MongoClient類連接數(shù)據(jù)庫(kù),須指定連接的數(shù)據(jù)庫(kù)____。

答案: 地址; 端口;

5、表示匹配任意數(shù)字的正則表達(dá)式是__).

答案: [0-9];\d;

6、Selenium中使用________獲取某個(gè)元素顯示在網(wǎng)頁(yè)上的文本。

答案: .text;

7、
通過BeautifulSoup的CSS選擇器soup對(duì)象定位到li節(jié)點(diǎn)? ? ? ? ? ? ? ?

答案: soup.select('#J_goodsList>ul>li');

8、使用組合的方式匹配任意非數(shù)字的正則表達(dá)式是? ? ? ? ? ? ? ? ?。

答案: [^0-9]

9、通過正則表達(dá)式提取html標(biāo)簽名稱:text = "<h1>這是標(biāo)題</h1>"是? ? ? ? ? ? ? ? ? ??。

答案:?re.search("<.+?>",text)

10、Selenium中使用_______獲取某個(gè)標(biāo)簽的其他屬性。

答案: get_atrribute()

11、使用組合方式匹配\w的正則表達(dá)式是? ? ? ? ? ? ? ? ??。

答案: [a-zA-Z0-9_];

12、通過正則表達(dá)式驗(yàn)證一個(gè)字符是不是0-100之間的數(shù)字,是? ? ? ? ? ? ? ? ? ??

答案:?0$|[1-9]\d?$|100$;

13、獲取所有l(wèi)i元素下的所有class屬性的值的XPath語(yǔ)句是? ? ? ? ? ? ? ? ? ?。

答案: xpath('//li/@class');

14、獲取倒數(shù)第二個(gè)li的a標(biāo)簽里內(nèi)容的XPath語(yǔ)句是? ? ? ? ? ? ? ??。

答案: xpath('//li[last()-1]/a')[0].text;xpath('//li[last()-1]/a/text()');

15、獲取最后一個(gè)li的a的href屬性對(duì)應(yīng)的值的XPath語(yǔ)句是 ? ? ? ? ? ? ? ? ? ? ??

答案: xpath('//li[last()]/a/@href');

?

四、簡(jiǎn)答題(本大題共5小題,每小題5分,共25分)

1、簡(jiǎn)述網(wǎng)絡(luò)爬蟲基本工作原理。

答案:

(1)預(yù)先設(shè)定一個(gè)或若干個(gè)初始網(wǎng)頁(yè)URL,將初始URL加入到待爬取URL列表中;

(2)從待爬取列表中逐個(gè)讀取URL,并將URL加入到已爬取URL列表中,然后下載網(wǎng)頁(yè);

(3)解析已下載的網(wǎng)頁(yè),并存儲(chǔ)提取的數(shù)據(jù),從中獲取新的URL;

(4)將新的URL在已爬取的URL列表中進(jìn)行比對(duì),檢查該網(wǎng)頁(yè)是否已爬取,如果網(wǎng)頁(yè)沒有被爬取,則將新的URL地址放入到待爬取URL列表的末尾,等待讀取;

(5)如此往復(fù),直到待爬取URL列表為空或者滿足設(shè)定的終止條件,最終達(dá)到遍歷網(wǎng)頁(yè)的目的。

2、簡(jiǎn)述在瀏覽器中輸入一個(gè)URL按下回車鍵后瀏覽器顯示內(nèi)容的這一過程的HTTP原理。

答案:

1瀏覽器向Web服務(wù)器發(fā)送了一個(gè)HTTP請(qǐng)求;

2Web服務(wù)器接收請(qǐng)求后進(jìn)行解析和處理,返回給瀏覽器對(duì)應(yīng)的HTTP響應(yīng)

3瀏覽器對(duì)HTTP響應(yīng)進(jìn)行解析,將網(wǎng)頁(yè)呈現(xiàn)。

3、簡(jiǎn)述常見的幾種反爬蟲策略。

答案:

1通過Headers反爬蟲通過識(shí)別用戶請(qǐng)求的Headers來(lái)反爬蟲

2基于用戶行為反爬蟲通過檢測(cè)用戶行為來(lái)判斷請(qǐng)求是否來(lái)自爬蟲程序

4、寫出圖片驗(yàn)證碼的識(shí)別思路。

答案:

1獲取驗(yàn)證碼圖片。

2將圖像轉(zhuǎn)化為灰度圖像

3將灰度圖像轉(zhuǎn)化為二值圖像。

(4)使用OCR技術(shù)識(shí)別圖中字母或數(shù)字

5、簡(jiǎn)述點(diǎn)觸驗(yàn)證碼的識(shí)別思路。

答案:

(1)獲取驗(yàn)證碼圖片

(2)獲取單擊的位置坐標(biāo)。

(3)解析坐標(biāo),模擬點(diǎn)擊。

6、簡(jiǎn)述滑動(dòng)拼圖驗(yàn)證識(shí)別思路。

答案:

1獲取驗(yàn)證碼圖片。

2在圖片上繪制文字。

3獲取滑塊移動(dòng)至缺口的距離。

4生成滑塊移動(dòng)軌跡

5模擬拖動(dòng)滑塊。

7、Scrapy框架由哪7個(gè)組件構(gòu)成,每個(gè)組件的有什么功能?

答案:

1Engine?:處理系統(tǒng)的數(shù)據(jù)流、觸發(fā)事務(wù),是整個(gè)框架的核心。

2Scheduler?:處理所有的Request, 并按照一定的方式將其進(jìn)行整理、排列和入隊(duì)

3Downloader?:下載網(wǎng)頁(yè)內(nèi)容。

4Spider:解析所有的Response,提取Item所需的數(shù)據(jù)和新的URL

5?Item Plpeline?:處理Item

6Downloader Middleware自定義擴(kuò)展下載功能。

7Spider Middleware自定義擴(kuò)展EngineSpider間通信的功能。

8、簡(jiǎn)述Scrapy中Engine控制數(shù)據(jù)流的工作基本步驟。

答案:

(1) Engine 從Spider獲取初始爬取列表的Request.

(2) Engine將要爬取的Request發(fā)送給Scheduler,通過Scheduler進(jìn)行調(diào)度。

(3) Engine向Scheduler獲取下一個(gè)要爬取的Request.

(4) Engine 將Request通過Downloader Middleware發(fā)送給Downloader.

(5)當(dāng)網(wǎng)頁(yè)下載完畢,Downloader 生成該網(wǎng)頁(yè)的Response,并將其通過Downloader Middleware提交給Engine.

(6) Engine 將接收到Response通過Spider Middleware發(fā)送給Spider處理。

(7) Spider 解析響應(yīng),提取Item所需的數(shù)據(jù)和新的URL,并將Item和新的Request通過Spider Middleware提交給Engine。

(8) Engine 將Item發(fā)送給Item Pipeline,將新的Request發(fā)送給Scheduler.

(9)重復(fù)第(2) ~ (8) 步,直到Scheduler中沒有Request, Engine 關(guān)閉該爬蟲程序,爬取結(jié)束。

9、簡(jiǎn)述cookie和session會(huì)話的聯(lián)系與區(qū)別。

答案:

1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。

2、cookie不是很安全,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙

3、session比較占用你服務(wù)器的性能

4、單個(gè)cookie保存的數(shù)據(jù)不能超過4K

10、羅列五個(gè)常見的請(qǐng)求頭信息。

答案:

User-Agent

Accept

Referer?cookie

Content-Type

11、簡(jiǎn)述JSON數(shù)據(jù)的本質(zhì)與使用。

答案:

JSON的本質(zhì):是一個(gè)字符串,JSON是對(duì)JS對(duì)象的字符串表達(dá)式,它使用文本形式表示一個(gè)JS對(duì)象的信息。

JSON使用:

(1)json.dumps,將Python的list或者dict返回為一個(gè)JSON字符串;

(2)json.loads將JSON字符串返回為Python的list或者dict;

(3)json.dump,將Python的list或者dict轉(zhuǎn)為一個(gè)JSON字符串,保存到文件中

(4)json.load?,從JSON文件中讀出JSON數(shù)據(jù),并轉(zhuǎn)換為Python的list或者dict。

?

12、簡(jiǎn)述下在?requests 模塊中,requests.content ?requests.text 什么區(qū)別。

答案:

requests.text返回的是unicode型數(shù)據(jù),requsets.content返回的是bytes(二進(jìn)制)型數(shù)據(jù)

13、簡(jiǎn)述下通用爬蟲工作流程。

答案:

工作流程可以分為爬取網(wǎng)頁(yè)、解析網(wǎng)頁(yè)和存儲(chǔ)數(shù)據(jù)三個(gè)步驟。

14、解釋一下一個(gè)URL由幾個(gè)部分組成:scheme://host:port/path/?query-string=xxx#anchor

答案:

URL:是對(duì)可以從互聯(lián)網(wǎng)上得到的資源位置和訪問方法的一種簡(jiǎn)潔表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址。

scheme:協(xié)議

host/IP:服務(wù)器的IP地址或者域名

port:服務(wù)器的端口

path:訪問資源的路徑

query-string:參數(shù),發(fā)送給http服務(wù)器的數(shù)據(jù)

anchor:錨

15、request請(qǐng)求方式中的post、get有什么區(qū)別

答案:

GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息;

get安全性非常低,post安全性較高,但是get執(zhí)行效率卻比Post方法好

16、簡(jiǎn)述使用Scrapy框架的一般流程。

答案:

1.創(chuàng)建新項(xiàng)目;2.修改items腳本,定義Item中數(shù)據(jù)的結(jié)構(gòu)3.創(chuàng)建spider腳本,解析響應(yīng),提取數(shù)據(jù)和新的URL;4.修改settings.py腳本,設(shè)置Scrapy組件和定義全局變量5.運(yùn)行爬蟲程序。

五、編程題(本大題共2小題,每小題10分,共20分)

1、
編寫一個(gè)python程序,參考附錄中的內(nèi)容,使用python中的selenium模塊完成以下內(nèi)容: ? a. ? 打開谷歌瀏覽器 ? b. ? 訪問百度首頁(yè) ? c. ? 在百度首頁(yè)的文本輸入框中輸入“泉州職業(yè)技術(shù)大學(xué)” ? d. ? 點(diǎn)擊“百度一下”按鈕 附錄1:百度首頁(yè)中輸入框?qū)?yīng)的html代碼 `<input id="kw" name="wd" value="" maxlength="255" autocomplete="off">` 附錄2:百度首頁(yè)中“百度以下”按鈕對(duì)應(yīng)的html代碼 `<input type="submit" id="su" value="百度一下" class="bg s_btn">`

答案:

from selenium import webdriver
Browser = webdriver.Chrom()
Browser.get(“https://www.baidu.com”)
Browser.find_element_by_id(‘kw’).send_keys(“泉州職業(yè)技術(shù)大學(xué)”)
Browser.find_element_by_id(‘su’).click()

?

2、使用Selenium模擬瀏覽器訪問淘寶首頁(yè)(網(wǎng)址https://www.taobao.com/),通過selenium庫(kù)提供的常用方法定位節(jié)點(diǎn),輸出爬取到的節(jié)點(diǎn)和節(jié)點(diǎn)信息。

附錄:

<input id="q" name="q" aria-label="請(qǐng)輸入搜索文字" accesskey="s" autofocus="true" autocomplete="off" aria-haspopup="true" aria-combobox="list" role="combobox" x-webkit-grammar="builtin:translate">

?

答案:

from selenium import webdriver??????? #導(dǎo)入webdriver模塊

#初始化Google Chrome瀏覽器對(duì)象,并賦值給browser

browser = webdriver.Chrome()

#請(qǐng)求淘寶首頁(yè),打開一個(gè)瀏覽器窗口

browser.get('https://www.taobao.com/')

#輸出id屬性值為“q”的節(jié)點(diǎn)

print('通過id屬性值“q”定位節(jié)點(diǎn):')

print(browser.find_element_by_id('q'))

#輸出class屬性值為“btn-search”的節(jié)點(diǎn)

print('通過class屬性值“btn-search”定位節(jié)點(diǎn):')

print(browser.find_element_by_class_name('btn-search'))

#輸出使用XPath定位的id屬性值為“q”的節(jié)點(diǎn)

print('通過XPath定位id屬性值為“q”的節(jié)點(diǎn):')

print(browser.find_element_by_xpath('//input[@id="q"]'))

#輸出使用CSS選擇器定位的class屬性值為“btn-search”的節(jié)點(diǎn)

print('通過CSS選擇器定位class屬性值為“btn-search”的節(jié)點(diǎn):')

print(browser.find_element_by_css_selector('.btn-search'))

#定位class屬性值為“btn-search”的節(jié)點(diǎn),并賦值給element

element = browser.find_element_by_class_name('btn-search')

#輸出element的type屬性值

print('class屬性值為“btn-search”節(jié)點(diǎn)的type屬性值:', element.get_attribute("type"))

#輸出element的文本

print('class屬性值為“btn-search”節(jié)點(diǎn)的文本:', element.text)

#輸出element的節(jié)點(diǎn)名

print('class屬性值為“btn-search”節(jié)點(diǎn)的節(jié)點(diǎn)名:', element.tag_name)

#輸出element的id

print('class屬性值為“btn-search”節(jié)點(diǎn)的id:', element.id)

?

3、爬取Python中文開發(fā)者社區(qū)的Python高級(jí)教程網(wǎng)頁(yè)(網(wǎng)址https://www.pythontab.com/html/pythonhexinbiancheng/),輸出所有頁(yè)面的URL、響應(yīng)狀態(tài)碼和請(qǐng)求頭。(總共有27頁(yè),從第2頁(yè)開始每翻一頁(yè)url變成https://www.pythontab.com/html/pythonhexinbiancheng/2.html,以此類推至https://www.pythontab.com/html/pythonhexinbiancheng/27.html)

附錄:

headersvalue = {

??? 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'

}?? #設(shè)置請(qǐng)求頭的User-Agent信息

#定義代理IP

proxy = {'http': 'http://121.232.148.167:9000'}

?

答案:

import time??????????????????? #導(dǎo)入time模塊

import random??????????????????#導(dǎo)入random模塊

import requests????????????????? #導(dǎo)入requests模塊

#定義base_url字符串

base_url='https://www.pythontab.com/html/pythonhexinbiancheng/'

headersvalue = {

??? 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'

}?? #設(shè)置請(qǐng)求頭的User-Agent信息

#定義代理IP

proxy = {'http': 'http://121.232.148.167:9000'}

for i in range(1,28):??????????????? #循環(huán)

??? if i>1:

??????? url = base_url+str(i)+'.html'#組合網(wǎng)頁(yè)URL

??? else:

??????? url = base_url??????????? #第一頁(yè)URL

??? print(url)??????????????????????????????????? #輸出每個(gè)頁(yè)面的URL

??? #異常判斷

??? try:

??????? #設(shè)置代理IP,發(fā)送HTTP請(qǐng)求

??????? r=requests.get(url,headers=headersvalue,proxies=proxy)

??? except:

??????? print('請(qǐng)求失敗')???? #請(qǐng)求錯(cuò)誤,輸出“請(qǐng)求失敗”

??? else:

??????? print(r.status_code)?????? #輸出響應(yīng)狀態(tài)碼

??????? print(r.request.headers)?#輸出請(qǐng)求頭

??? #設(shè)置隨機(jī)休眠時(shí)間

????sleep_time = random.randint(0, 2) + random.random()

??? time.sleep(sleep_time)?????????#程序休眠sleep_time

?


魔法他在召喚我的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
霍林郭勒市| 扎赉特旗| 鹤壁市| 湖南省| 红河县| 万源市| 同江市| 长沙县| 锦州市| 康平县| 年辖:市辖区| 汉源县| 扬州市| 武安市| 卓资县| 藁城市| 惠来县| 齐齐哈尔市| 黑河市| 临湘市| 宁河县| 禹城市| 攀枝花市| 阿拉善左旗| 黄大仙区| 驻马店市| 中卫市| 柳林县| 华容县| 武宣县| 苍山县| 南城县| 页游| 子长县| 临高县| 甘谷县| 莱西市| 叙永县| 普陀区| 安顺市| 徐汇区|