版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
復習題一、單項選擇題1、以下哪些是爬蟲技術可能存在風險(D)A、大量占用爬去網(wǎng)站的資源B、網(wǎng)站敏感信息的獲取造成的不良后果C、違背網(wǎng)站爬去設置D、以上都是下列不是urllib庫的四大模塊的是(C)A、urllib.requestB、urllib.errorC、urllib.sessionD、urllib.robotparser二、判斷題1、urllib是python內置的處理HTTP請求的庫。(對)2、urllib的request模塊可以非常方便地抓取URL內容,可以通過發(fā)送一個GET請求,獲取到網(wǎng)頁的內容。(對)3、MongoDB是關系型數(shù)據(jù)庫。(錯)4、爬取網(wǎng)頁數(shù)據(jù)的時候必須遵守robots.txt協(xié)議。(錯)5、定期更改網(wǎng)站結構進行可以一定程度上防止網(wǎng)頁數(shù)據(jù)被爬取。(對)三、簡答題1、請簡要回答什么網(wǎng)絡爬蟲。網(wǎng)絡爬蟲,又稱為網(wǎng)頁蜘蛛,網(wǎng)絡機器人,是一種按照一定的規(guī)則,自動請求萬維網(wǎng)網(wǎng)站并提取網(wǎng)絡數(shù)據(jù)的程序或腳本。2、請回答開發(fā)和使用網(wǎng)絡爬蟲的好處。爬蟲的出現(xiàn)在一定的程度上代替了手工訪問網(wǎng)頁,能夠實現(xiàn)自動化采集互聯(lián)網(wǎng)的數(shù)據(jù),以更高地效率去利用互聯(lián)網(wǎng)中的有效信息。復習題一、單項選擇題1、HTTP協(xié)議的全稱是(D)A、文件傳輸協(xié)議 B、郵件傳輸協(xié)議C、遠程登錄協(xié)議D、超文本傳輸協(xié)議2、正則表達式R+[0-9]{3},能匹配出以下哪個字符串(D) A、R3 B、039 C、R09 D、RR0933、以下正則表達式中,屬于非貪婪匹配,且允許出現(xiàn)0次的是(C) A、. B、.* C、.*? D、.+?4、下列選項中,發(fā)起HTTP請求成功后,服務器響應的狀態(tài)碼是(A) A、200 B、303 C、404 D、500二、判斷題1、在python中,一般我們會使用re模塊來實現(xiàn)Python正則表達式的功能。(對)2、re.search(pattern,string,flags=0)函數(shù)是掃描整個整個字符串,并返回第一個匹配成功的。(對)3、re.findall(pattern,string,flags=0)函數(shù)是掃描整個字符串,并將結果以字典形式返回。(錯)4、sub(pattern,repl,string,count=0,flags=0)函數(shù)用于字符串中的匹配項,該函數(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ù)和負數(shù)在內的實數(shù))并求和,例如字符串為:str1='-6.94hello87nice100bye',則和為-6.94+87+100=180.06,請編寫程序實現(xiàn)。importre
#str1='-3.14good87nice19bye'
nums=re.findall(r'-?\d+\.?\d*',str1)
result=sum([float(x)forxinnums])
print(result)復習題一、單項選擇題1、關于HTTP相關協(xié)議,以下說法錯誤的是(C)A、HTTPS在HTTP的基礎上加入了SSL協(xié)議B、HTTP全過程分為請求和響應兩個階段C、HTTP響應狀態(tài)碼404代表服務器正常響應D、HTTP是應用層協(xié)議2、用HTML標記語言編寫一個簡單的網(wǎng)頁,網(wǎng)頁最基本的結構是(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標簽名稱(D)A、linkB、tableC、formD、List4、如果當前網(wǎng)頁請求的url是/test/images/abc.jpg,那么執(zhí)行request.url.split("/")[-1]代碼的結果是(A)A、abc.jpgB、/abc.jpgC、.jpgD、images/abc.jpg5、下面關于Xpath路徑表達式解釋錯誤的是(C)A、選取屬性id為content的div元素://div[@id='content']B、選取所有帶有屬性class的div元素://div[@class]C、選取div節(jié)點中的第二個p元素的文本://div/p[1]/text()D、選取div節(jié)點中的最后一個p元素的文本://div/p[last()]/text()6、下面哪項不是常用的Python數(shù)據(jù)解析方式或解析用到的包(D)A、lxmlB、bs4C、xpathD、Pymysql7、通過python網(wǎng)絡爬蟲時,關于反爬蟲的常見應對策略,哪項是最不可取的(D)A、修改請求頭,模擬瀏覽器請求B、修改爬蟲間隔時間,模擬用戶“真實”瀏覽C、修改訪問IP地址,模擬多人訪問D、動用黑客手段,直接攻擊網(wǎng)站服務器8、下面是使用Python的Xpath解析頁面數(shù)據(jù)代碼,為保證運行,空白處①和②填寫內容分別是(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)絡爬蟲可分為通用爬蟲和聚焦爬蟲兩種。(對)2、HTTP通信由兩部分組成:客戶端請求消息與服務器響應消息。(對)3、在python3中,str轉bytes使用decode(),bytes轉str使用encode()(錯)。4、使用requests發(fā)起請求后,可以使用text和content接收響應內容。(對)5、xlrd庫支持xlsx格式的Excel文件的所有操作。(錯)三、編程題1、使用Urllib庫請求URL代表的網(wǎng)頁,使用正則表達式解析網(wǎng)頁內容,打印輸出該網(wǎng)頁的標題和正文內容。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請求信息,再獲取響應
data=response.read().decode("utf-8")
#獲取標題
reg='<title>(.*?)</title>'
title=re.findall(reg,data,re.S|re.M)
print("標題:",title[0])
#獲取文章內容
reg='<divclass="viewTRS_UEDITORtrs_paper_defaulttrs_web">(.*?)</div>'
content=re.findall(reg,data,re.S|re.M)
print("正文內容:",content[0])
exceptExceptionasex:#捕獲異常
print(f"{ex}報錯了!")復習題一、單項選擇題1、下面有關Requests庫說法不正確的是(D)A、Requests是Python的一個HTTP請求庫B、在Windows下安裝可以使用命令“pipinstallrequests”C、在Linux下安裝可以使用命令“sudopipinstallrequests”D、Requests庫的GET請求不能攜帶參數(shù)(D)2、假定響應對象為r,關于Requests庫通過以下方法獲取響應內容不正確的是(D)A、r.status_code表示響應轉態(tài)碼B、r.raw表示原始響應體,使用r.raw.read()讀取C、r.text表示字符串方式的響應體,會自動根據(jù)響應頭部的字符編碼進行解碼。D、r.url表示獲取網(wǎng)頁中的所有網(wǎng)址二、判斷題1、通用網(wǎng)絡爬蟲常用串行工作方式。(錯)2、需要登錄的網(wǎng)站一般通過GET請求就可以實現(xiàn)登錄。(錯)3、代理中間件的可用代理列表一定要寫在setting.py中。(錯)4、所有的異步加載都會向后臺發(fā)送請求。(錯)5、requests中get請求方法的使用為requests.get(url).(對)三、編程題1、使用requests請求框架和BeautifulSoup解析框架,爬取以下Url變量所指定的網(wǎng)頁,獲取其網(wǎng)頁的標題和新聞內容。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解析器,生成結構樹
frombs4importBeautifulSoup
soup=BeautifulSoup(res.text,'html.parser')
#3.找出特定標簽的html元素
print(soup.p)#標簽名,返回第一個
#打印網(wǎng)頁的頭部區(qū)域
print("打印網(wǎng)頁的頭部區(qū)域start")
print(soup.head)
print("打印網(wǎng)頁的頭部區(qū)域end")
#4.獲取網(wǎng)頁的標題、新聞內容
print("新聞的標題是:")
title=soup.select('.tit')[0].text#返回的是是一個列表對象,使用小標0進行獲取,然后獲取文字內容,使用了".text"方法
print(title)
print("新聞的內容是:")
content=soup.select('.view')[0].text
print(content)2、使用Xpath實現(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])
復習題一、單項選擇題1、下面有關Selenium庫說法不正確的是(D)A、Selenium支持Chrome等常見瀏覽器。B、使用Selenium庫需要使用命令fromseleniumimportwebdriver。C、chromedriver的版本與Chrome瀏覽器版本有對應關系。D、以上說法均錯誤。2、目前驗證碼的類型有(D)A、單擊式驗證碼B、圖形驗證碼C、滑動驗證碼D、以上都是二、判斷題1、Selenium是一個用于網(wǎng)站應用程序自動化的工具,他可以直接運行在瀏覽器中。(對)2、安裝Selenium可以使用pipinstallselenium命令來完成(對)3、Selenium可以模擬單擊、右擊操作,但是不能模擬文本輸入操作。(錯)4、Selenium支持通過id和name屬性來查找元素(對)5、使用Selenium庫必須安裝配置GoogleChrome的WebDriver。(錯)三、編程題1.請使用Selenium對對中國站長站素材欄目(/tupian/)的圖片進行爬取。參考代碼: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ī)律不一致,所以要進行判斷
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("請輸入結束頁碼:"))
forpageinrange(start_page,end_page+1):
print("第%s頁開始下載······"%page)
content=handle_request(url,page)
#解析內容
parse_content(content)
time.sleep(2)
print("第%s頁下載完畢······"%page)
print("下載完成!")
if__name__=="__main__":
main()2.請使用Selenium爬蟲對QQ音樂進行爬取。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")復習題一、單項選擇題1、下面有關Scrapy庫說法不正確的是(A)A、Scrapy不支持XPath選擇器B、可以使用pipinstallscrapy來安裝Scrapy框架。C、可以使用scrapystartprojectxxx來創(chuàng)建scrapy爬蟲項目。D、可以使用scrapyversion命令查看scrapy的版本信息。(A)2、有關Scrapy框架不正確的是(D)A、scrapygenspiderxxx表示使用模板創(chuàng)建爬蟲項目B、可以使用scrapycrawlxxx來啟動爬蟲項目C、Pycharm中可以直接運行Scrapy爬蟲項目。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/)的圖片進行分頁式爬取。參考代碼: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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版文化產品居間代理服務合同范本2篇
- 2025年度昆山住宅小區(qū)物業(yè)費收取標準與居民公約合同3篇
- 保定幼兒師范高等??茖W校《電路原理下》2023-2024學年第一學期期末試卷
- 2024年狗咬傷賠償協(xié)議書范本3篇
- 2024年度別墅庭院地面鋪裝勞務分包合同范本(定制版)3篇
- 2025年市政道路建設用塊石供應與施工配合合同2篇
- 2025版人工智能與大數(shù)據(jù)干股股份合作協(xié)議書范本3篇
- 蚌埠經濟技術職業(yè)學院《計量經濟學(中級)》2023-2024學年第一學期期末試卷
- 2025年度安全文化建設與安全員聘用服務協(xié)議3篇
- 2024年標準咨詢服務委托合同書規(guī)范樣本版
- 2024養(yǎng)老院消防設備升級與消防系統(tǒng)維護服務合同3篇
- 2024-2025學年寒假致學生家長的一封信(安全版)
- 人才引進政策購房合同模板
- 學生宿舍消防安全制度模版(3篇)
- 四川省成都市2023-2024學年高二上學期期末調研考試語文試題(解析版)
- 《兩用物項證》課件
- 浙江省杭州市2023-2024學年高一上學期1月期末英語試題 含解析
- 人教版(2024新版)英語七年級上冊期末復習綜合測試卷(含答案)
- 【中考真題】四川省廣安市2024年中考語文真題試卷(含答案)
- 學校教材教輔排查總結報告三篇
- 衛(wèi)生部手術分級目錄(2023年1月份修訂)
評論
0/150
提交評論