版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
復(fù)習(xí)題一、單項(xiàng)選擇題1、以下哪些是爬蟲技術(shù)可能存在風(fēng)險(D)A、大量占用爬去網(wǎng)站的資源B、網(wǎng)站敏感信息的獲取造成的不良后果C、違背網(wǎng)站爬去設(shè)置D、以上都是下列不是urllib庫的四大模塊的是(C)A、urllib.requestB、urllib.errorC、urllib.sessionD、urllib.robotparser二、判斷題1、urllib是python內(nèi)置的處理HTTP請求的庫。(對)2、urllib的request模塊可以非常方便地抓取URL內(nèi)容,可以通過發(fā)送一個GET請求,獲取到網(wǎng)頁的內(nèi)容。(對)3、MongoDB是關(guān)系型數(shù)據(jù)庫。(錯)4、爬取網(wǎng)頁數(shù)據(jù)的時候必須遵守robots.txt協(xié)議。(錯)5、定期更改網(wǎng)站結(jié)構(gòu)進(jìn)行可以一定程度上防止網(wǎng)頁數(shù)據(jù)被爬取。(對)三、簡答題1、請簡要回答什么網(wǎng)絡(luò)爬蟲。網(wǎng)絡(luò)爬蟲,又稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人,是一種按照一定的規(guī)則,自動請求萬維網(wǎng)網(wǎng)站并提取網(wǎng)絡(luò)數(shù)據(jù)的程序或腳本。2、請回答開發(fā)和使用網(wǎng)絡(luò)爬蟲的好處。爬蟲的出現(xiàn)在一定的程度上代替了手工訪問網(wǎng)頁,能夠?qū)崿F(xiàn)自動化采集互聯(lián)網(wǎng)的數(shù)據(jù),以更高地效率去利用互聯(lián)網(wǎng)中的有效信息。復(fù)習(xí)題一、單項(xiàng)選擇題1、HTTP協(xié)議的全稱是(D)A、文件傳輸協(xié)議 B、郵件傳輸協(xié)議C、遠(yuǎn)程登錄協(xié)議D、超文本傳輸協(xié)議2、正則表達(dá)式R+[0-9]{3},能匹配出以下哪個字符串(D) A、R3 B、039 C、R09 D、RR0933、以下正則表達(dá)式中,屬于非貪婪匹配,且允許出現(xiàn)0次的是(C) A、. B、.* C、.*? D、.+?4、下列選項(xiàng)中,發(fā)起HTTP請求成功后,服務(wù)器響應(yīng)的狀態(tài)碼是(A) A、200 B、303 C、404 D、500二、判斷題1、在python中,一般我們會使用re模塊來實(shí)現(xiàn)Python正則表達(dá)式的功能。(對)2、re.search(pattern,string,flags=0)函數(shù)是掃描整個整個字符串,并返回第一個匹配成功的。(對)3、re.findall(pattern,string,flags=0)函數(shù)是掃描整個字符串,并將結(jié)果以字典形式返回。(錯)4、sub(pattern,repl,string,count=0,flags=0)函數(shù)用于字符串中的匹配項(xiàng),該函數(shù)將匹配上的字符串替換成指定的字符串,返回新的字符串。(對)5、re.I表示做多行匹配.(錯)三、編程題1、拆分字符串,將下面詩中的每一句話分別提取出來。shici=‘李白乘舟將欲行,忽聞岸上踏歌聲。桃花潭水深千尺,不及汪倫送我情?!瘏⒖即a:shici='李白乘舟將欲行,忽聞岸上踏歌聲。桃花潭水深千尺,不及汪倫送我情。'
result=shici.split(r',')
result=shici.split(r'。')
foriteminresult:
print(item)2、提取用戶輸入數(shù)據(jù)中的數(shù)據(jù)(數(shù)值包含正數(shù)和負(fù)數(shù)在內(nèi)的實(shí)數(shù))并求和,例如字符串為:str1='-6.94hello87nice100bye',則和為-6.94+87+100=180.06,請編寫程序?qū)崿F(xiàn)。importre
#str1='-3.14good87nice19bye'
nums=re.findall(r'-?\d+\.?\d*',str1)
result=sum([float(x)forxinnums])
print(result)復(fù)習(xí)題一、單項(xiàng)選擇題1、關(guān)于HTTP相關(guān)協(xié)議,以下說法錯誤的是(C)A、HTTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議B、HTTP全過程分為請求和響應(yīng)兩個階段C、HTTP響應(yīng)狀態(tài)碼404代表服務(wù)器正常響應(yīng)D、HTTP是應(yīng)用層協(xié)議2、用HTML標(biāo)記語言編寫一個簡單的網(wǎng)頁,網(wǎng)頁最基本的結(jié)構(gòu)是(D)A、<html><head>…</head><frame>…</frame></html>B、<html><title>…</title><body>…</body></html>C、<html><title>…</title><frame>…</frame></html>D、<html><head>…</head><body>…</body></html>3、下面哪個不是HTML標(biāo)簽名稱(D)A、linkB、tableC、formD、List4、如果當(dāng)前網(wǎng)頁請求的url是/test/images/abc.jpg,那么執(zhí)行request.url.split("/")[-1]代碼的結(jié)果是(A)A、abc.jpgB、/abc.jpgC、.jpgD、images/abc.jpg5、下面關(guān)于Xpath路徑表達(dá)式解釋錯誤的是(C)A、選取屬性id為content的div元素://div[@id='content']B、選取所有帶有屬性class的div元素://div[@class]C、選取div節(jié)點(diǎn)中的第二個p元素的文本://div/p[1]/text()D、選取div節(jié)點(diǎn)中的最后一個p元素的文本://div/p[last()]/text()6、下面哪項(xiàng)不是常用的Python數(shù)據(jù)解析方式或解析用到的包(D)A、lxmlB、bs4C、xpathD、Pymysql7、通過python網(wǎng)絡(luò)爬蟲時,關(guān)于反爬蟲的常見應(yīng)對策略,哪項(xiàng)是最不可取的(D)A、修改請求頭,模擬瀏覽器請求B、修改爬蟲間隔時間,模擬用戶“真實(shí)”瀏覽C、修改訪問IP地址,模擬多人訪問D、動用黑客手段,直接攻擊網(wǎng)站服務(wù)器8、下面是使用Python的Xpath解析頁面數(shù)據(jù)代碼,為保證運(yùn)行,空白處①和②填寫內(nèi)容分別是(B)importrequestsfromlxmlimportetreeurl=""html=requests.①(url).contentselector=etree.HTML(html)tags=selector.②('//div[@class="s-top-wrap"]')A、get、pathB、get、xpathC、select,pathD、select,xpath二、判斷題1、根據(jù)使用場景,網(wǎng)絡(luò)爬蟲可分為通用爬蟲和聚焦爬蟲兩種。(對)2、HTTP通信由兩部分組成:客戶端請求消息與服務(wù)器響應(yīng)消息。(對)3、在python3中,str轉(zhuǎn)bytes使用decode(),bytes轉(zhuǎn)str使用encode()(錯)。4、使用requests發(fā)起請求后,可以使用text和content接收響應(yīng)內(nèi)容。(對)5、xlrd庫支持xlsx格式的Excel文件的所有操作。(錯)三、編程題1、使用Urllib庫請求URL代表的網(wǎng)頁,使用正則表達(dá)式解析網(wǎng)頁內(nèi)容,打印輸出該網(wǎng)頁的標(biāo)題和正文內(nèi)容。URL=”/zwxx_176/bmdt/202104/t20210406_9072956.html”參考代碼:importurllib.request,re
try:
url="/zwxx_176/bmdt/202104/t20210406_9072956.html"
headers={
"User-Agent":
"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.42Safari/537.36Edg/86.0.622.19"
}
req=urllib.request.Request(url=url,headers=headers)#req=request封裝請求信息
response=urllib.request.urlopen(req)#傳入封裝的req請求信息,再獲取響應(yīng)
data=response.read().decode("utf-8")
#獲取標(biāo)題
reg='<title>(.*?)</title>'
title=re.findall(reg,data,re.S|re.M)
print("標(biāo)題:",title[0])
#獲取文章內(nèi)容
reg='<divclass="viewTRS_UEDITORtrs_paper_defaulttrs_web">(.*?)</div>'
content=re.findall(reg,data,re.S|re.M)
print("正文內(nèi)容:",content[0])
exceptExceptionasex:#捕獲異常
print(f"{ex}報錯了!")復(fù)習(xí)題一、單項(xiàng)選擇題1、下面有關(guān)Requests庫說法不正確的是(D)A、Requests是Python的一個HTTP請求庫B、在Windows下安裝可以使用命令“pipinstallrequests”C、在Linux下安裝可以使用命令“sudopipinstallrequests”D、Requests庫的GET請求不能攜帶參數(shù)(D)2、假定響應(yīng)對象為r,關(guān)于Requests庫通過以下方法獲取響應(yīng)內(nèi)容不正確的是(D)A、r.status_code表示響應(yīng)轉(zhuǎn)態(tài)碼B、r.raw表示原始響應(yīng)體,使用r.raw.read()讀取C、r.text表示字符串方式的響應(yīng)體,會自動根據(jù)響應(yīng)頭部的字符編碼進(jìn)行解碼。D、r.url表示獲取網(wǎng)頁中的所有網(wǎng)址二、判斷題1、通用網(wǎng)絡(luò)爬蟲常用串行工作方式。(錯)2、需要登錄的網(wǎng)站一般通過GET請求就可以實(shí)現(xiàn)登錄。(錯)3、代理中間件的可用代理列表一定要寫在setting.py中。(錯)4、所有的異步加載都會向后臺發(fā)送請求。(錯)5、requests中g(shù)et請求方法的使用為requests.get(url).(對)三、編程題1、使用requests請求框架和BeautifulSoup解析框架,爬取以下Url變量所指定的網(wǎng)頁,獲取其網(wǎng)頁的標(biāo)題和新聞內(nèi)容。Url=/zwxx_176/bmdt/202104/t20210406_9072956.html”參考代碼:#1.利用requests.get(url)獲取網(wǎng)頁頁面的html文件
importrequests
newsurl='/zwxx_176/bmdt/202104/t20210406_9072956.html'
res=requests.get(newsurl)
res.encoding='utf_8'
print(res)
#2.利用BeautifulSoup的HTML解析器,生成結(jié)構(gòu)樹
frombs4importBeautifulSoup
soup=BeautifulSoup(res.text,'html.parser')
#3.找出特定標(biāo)簽的html元素
print(soup.p)#標(biāo)簽名,返回第一個
#打印網(wǎng)頁的頭部區(qū)域
print("打印網(wǎng)頁的頭部區(qū)域start")
print(soup.head)
print("打印網(wǎng)頁的頭部區(qū)域end")
#4.獲取網(wǎng)頁的標(biāo)題、新聞內(nèi)容
print("新聞的標(biāo)題是:")
title=soup.select('.tit')[0].text#返回的是是一個列表對象,使用小標(biāo)0進(jìn)行獲取,然后獲取文字內(nèi)容,使用了".text"方法
print(title)
print("新聞的內(nèi)容是:")
content=soup.select('.view')[0].text
print(content)2、使用Xpath實(shí)現(xiàn)圖書信息的爬取,網(wǎng)址為:/。要求:(1)爬取的圖書的字段有:書名、價格和評分。(2)使用XPath將所有頁的圖書信息全部爬取下來。(3)將數(shù)據(jù)保存于文件中(推薦使用csv文件)。參考代碼:importrequests
fromlxmlimporthtml
importcsv
base_url='/catalogue/'
pages=[base_url+str(i)+'.html'foriinrange(2,52)]
books=[]
forpageinpages:
page_source=requests.get(page).content.decode()
selector=html.fromstring(page_source)
titles=selector.xpath('//*[@id="default"]/div/div/div/div/section/div[2]/ol/li/article/h3/a/text()')
prices=selector.xpath('//*[@id="default"]/div/div/div/div/section/div[2]/ol/li/article/div[2]/p[1]/text()')
prices=[e[1:]foreinprices]
rating=selector.xpath('//*[@id="default"]/div/div/div/div/section/div[2]/ol/li/article/p/@class')
rating=[e.split('')[1]foreinrating]
foriinrange(len(prices)):
books.append((titles[i],prices[i],rating[i]))
print(books)
withopen("books.csv","w+")asf:
writer=csv.writer(f)
writer.writerow(('book_name','price','rating'))
writer.writerows(books)
print("處理完成")3、使用requests_html模塊請求網(wǎng)頁,請求的url地址如下,將指定網(wǎng)頁中中的所有超練級打印輸出到控制臺。參考代碼:URL=”/html/gndy/oumei/index.html”fromrequests_htmlimportHTMLSession
headers={
'user-agent':'Mozilla/5.0(WindowsNT6.1;WOW64)'
}
session=HTMLSession()
resp=session.get('/html/gndy/oumei/index.html')
resp.encoding="utf-8"
link=resp.html.xpath("http://a[@class='ulink'][2]/@href")
print("得到了該頁面的記錄條數(shù)為:",str(len(link)))
foriinrange(0,len(link)):
print(link[i])
復(fù)習(xí)題一、單項(xiàng)選擇題1、下面有關(guān)Selenium庫說法不正確的是(D)A、Selenium支持Chrome等常見瀏覽器。B、使用Selenium庫需要使用命令fromseleniumimportwebdriver。C、chromedriver的版本與Chrome瀏覽器版本有對應(yīng)關(guān)系。D、以上說法均錯誤。2、目前驗(yàn)證碼的類型有(D)A、單擊式驗(yàn)證碼B、圖形驗(yàn)證碼C、滑動驗(yàn)證碼D、以上都是二、判斷題1、Selenium是一個用于網(wǎng)站應(yīng)用程序自動化的工具,他可以直接運(yùn)行在瀏覽器中。(對)2、安裝Selenium可以使用pipinstallselenium命令來完成(對)3、Selenium可以模擬單擊、右擊操作,但是不能模擬文本輸入操作。(錯)4、Selenium支持通過id和name屬性來查找元素(對)5、使用Selenium庫必須安裝配置GoogleChrome的WebDriver。(錯)三、編程題1.請使用Selenium對對中國站長站素材欄目(/tupian/)的圖片進(jìn)行爬取。參考代碼:importurllib.parse
importurllib.request
frombs4importBeautifulSoup
importtime
importos
defhandle_request(url,page):
headers={
'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/74.0.3729.131Safari/537.36',
}
#由于第一頁和后面頁碼規(guī)律不一致,所以要進(jìn)行判斷
ifpage==1:
url=url.format('')
else:
url=url.format('_'+str(page))
#print(url)
request=urllib.request.Request(url,headers=headers)
#網(wǎng)站圖片是使用懶加載,必須要延時
response=urllib.request.urlopen(request,timeout=8).read().decode()
returnresponse
defdownload_image(image_src):
dirpath='mygudian'
#創(chuàng)建一個文件夾
print(os.path.exists(dirpath))
ifnotos.path.exists(dirpath):
os.mkdir(dirpath)
#創(chuàng)建文件名
filename=os.path.basename(image_src)
#圖片路徑
filepath=os.path.join(dirpath,filename)
#發(fā)送請求,保存圖片
headers={
'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/74.0.3729.131Safari/537.36',
}
request=urllib.request.Request(url=image_src,headers=headers)
response=urllib.request.urlopen(request)
withopen(filepath,'wb')asfp:
fp.write(response.read())
defparse_content(content):
#生成對象
image_list=[]
soup=BeautifulSoup(content,'lxml')
result=soup.find_all('img',attrs={'class':'lazy'})
forvalueinresult:
pic_url="https:"+value.attrs['data-original']
image_list.append(pic_url)
print(image_list)
#遍歷列表,依次下載圖片
forimage_srcinimage_list:
download_image(image_src)
defmain():
url='/tupian/index{}.html'
#/tupian/gudianmeinvtupian_2.html
start_page=int(input("請輸入開始頁碼:"))
end_page=int(input("請輸入結(jié)束頁碼:"))
forpageinrange(start_page,end_page+1):
print("第%s頁開始下載······"%page)
content=handle_request(url,page)
#解析內(nèi)容
parse_content(content)
time.sleep(2)
print("第%s頁下載完畢······"%page)
print("下載完成!")
if__name__=="__main__":
main()2.請使用Selenium爬蟲對QQ音樂進(jìn)行爬取。fromseleniumimportwebdriver
frommon.byimportBy
fromselenium.webdriver.support.uiimportWebDriverWait
importpandasaspd
importtime
browser=webdriver.Chrome()
wait=WebDriverWait(browser,20)
browser.get('/n/ryqq/toplist/5')
rank=[]
name=[]
singer=[]
defget_page():
forninrange(1,21):
rank.append(browser.find_element(By.XPATH,'//*[@id="app"]/div/div[2]/div[2]/div[3]/ul[2]/li[%s'%n+']/div/div[1]').text)
name.append(browser.find_element(By.XPATH,'//*[@id="app"]/div/div[2]/div[2]/div[3]/ul[2]/li[%s'%n+']/div/div[3]/span/a[2]').text)
singer.append(browser.find_element(By.XPATH,'//*[@id="app"]/div/div[2]/div[2]/div[3]/ul[2]/li[%s'%n+']/div/div[4]/a').text)
#print(rank)
browser.find_element(By.XPATH,'//*[@id="app"]/div/div[2]/div[2]/div[1]/span/a[1]/i[1]').click()
foriinrange(0,2):
get_page()
time.sleep(3)
data=pd.DataFrame({'排名':rank,'歌名':name,'歌手':singer})
data.to_csv("./qq_song.csv")復(fù)習(xí)題一、單項(xiàng)選擇題1、下面有關(guān)Scrapy庫說法不正確的是(A)A、Scrapy不支持XPath選擇器B、可以使用pipinstallscrapy來安裝Scrapy框架。C、可以使用scrapystartprojectxxx來創(chuàng)建scrapy爬蟲項(xiàng)目。D、可以使用scrapyversion命令查看scrapy的版本信息。(A)2、有關(guān)Scrapy框架不正確的是(D)A、scrapygenspiderxxx表示使用模板創(chuàng)建爬蟲項(xiàng)目B、可以使用scrapycrawlxxx來啟動爬蟲項(xiàng)目C、Pycharm中可以直接運(yùn)行Scrapy爬蟲項(xiàng)目。D、scrapy框架中不能使用bs4模塊解析網(wǎng)頁數(shù)據(jù)二、判斷題1、Windows下只有確保安裝了wheel、lxml、PyOpenss1、Twisted、Pywin32成功安裝后,才能安裝Scrapy。(對)2、imagespipeline是Scrapy框架中一種特殊的pipeline(管道),作用于圖片的下載。(對)3、Scrapy的配置文件settings.py,將命令“ROBOTSTXT_OBEY=True”表示不必遵守爬蟲協(xié)議。(錯)4、pipelines.py文件主要執(zhí)行保存數(shù)據(jù)的操作,數(shù)據(jù)對象來源于items.py。(對)5、Scrapy框架可以爬取Javascript等動態(tài)網(wǎng)站網(wǎng)頁。(錯)三、編程題1.請使用Scrapy爬蟲或selenium對對中國站長站素材欄目(/tupian/)的圖片進(jìn)行分頁式爬取。參考代碼:fromseleniumimportwebdriverfrommon.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitimporttimeimporturllib.requestimportosbrowser=webdriver.Chrome()wait=WebDriverWait(browser,20)browser.get('/tupian/')pic_name=[]pic_url=[]defdownload_image(image_src):dirpath='downloadpic'#創(chuàng)建一個文件夾print(os.path.exists(dirpath))ifnotos.path.exists(dirpath):os.mkdir(dirpath)image_src="https:"+image_src#創(chuàng)建文件名filename=os.path.basename(image_src)#圖片路徑filepath=os.path.join(dirpath,filename)#發(fā)送請求,保存圖片headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/74.0.3729.131Safari/537.36',}request=urllib.request.Request(url=image_src,headers=headers)response=urllib.request.urlopen(request)withopen(filepath,'wb')asfp:fp.write(response.read())defparse_content():forninrange(1,41):pic_name.append(browser.find_element(By.XPATH,"http://*/div[@class='itemmasonry-brick'][{}]/div[@class='bot-div']/a[@class='name']".format(n)).text)pic_url.append(browser.find_element(By.XPATH,"http://div[@class='itemmasonry-brick'][{}]/img[@class='lazy']".format(n)).get_attribute('data-original'))forimage_srcinpic_url:download_image(image_src)time.sleep(2)#//d
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025國有土地出讓合同
- 2025公司技術(shù)開發(fā)的合同范文
- 上海師范大學(xué)天華學(xué)院《檔案管理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 課題申報書:高中階段學(xué)校多樣化發(fā)展背景下省域推進(jìn)職普融通的教育制度構(gòu)建研究
- 2025車庫買賣合同模板
- 課題申報書:多元評價體系改革助推學(xué)生全面發(fā)展的校本研究
- 上海杉達(dá)學(xué)院《小學(xué)班隊(duì)管理與實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海杉達(dá)學(xué)院《社會工作評估》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海杉達(dá)學(xué)院《護(hù)理學(xué)基礎(chǔ)(一)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海歐華職業(yè)技術(shù)學(xué)院《音樂與新媒體運(yùn)營》2023-2024學(xué)年第一學(xué)期期末試卷
- 小紅書種草營銷師模擬題及答案(單選+多選+判斷)
- 2025年會計(jì)專業(yè)考試初級經(jīng)濟(jì)法基礎(chǔ)試卷及解答參考
- 2024年徐州市中考語文試卷(附答案解析)
- 公文寫作題庫(500道)
- 2023年《安徽大學(xué)學(xué)生手冊》在線考試學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 一封雞毛信的故事課件
- 變形桿菌實(shí)驗(yàn)活動風(fēng)險評估報告
- 養(yǎng)老服務(wù)與康復(fù)機(jī)構(gòu)作業(yè)指導(dǎo)書
- 五育并舉-勞以啟智動以潤心
- 2024年家裝家居行業(yè)解決方案-淘天集團(tuán)
- 人教版八年級上冊數(shù)學(xué)第三次月考試題
評論
0/150
提交評論