版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章
1.在自己的計(jì)算機(jī)中安裝配置Anaconda和OpenCV的開發(fā)環(huán)境。
2.完成讀取指定圖片,顯示并保存的程序。
ena=cv2.imreadClena.bmp”
cv2.destroyA11Windows()
r=cv2.imwrite("result,bmp”,lena)
3.在自己的計(jì)算機(jī)中安裝配置OpenCV貢獻(xiàn)庫
略
第2章
1.簡述二值圖像、灰度圖像和彩色的區(qū)別。
二值圖像也稱單色圖像或者1位圖像,以及顏色深度為1的圖像,它也是僅僅包含黑色和白
色兩種顏色的圖像。二值圖像的表示方法簡單便捷,但是因?yàn)槠鋬H有黑、白兩種顏色,所
表示的圖像不夠細(xì)膩。如果想要表現(xiàn)更多的細(xì)節(jié),就需要使用更多的顏色。灰度圖像是包
含灰度級(jí)(亮度)的圖像,通常,計(jì)算機(jī)會(huì)將灰度處理為256個(gè)灰度級(jí),用數(shù)值區(qū)間「0.2551
來表示。相比二值圖像和灰度圖像,彩色圖像是更常見的?類圖像,它能表現(xiàn)出更豐富的
細(xì)節(jié)信息。以常用的RGB色彩空間為例,在RGB色彩空間中,有R(red,紅色)通道、G(green,
綠色)通道和B(blue,藍(lán)色)通道,共三個(gè)通道。
2.I6bit深度的彩色圖像可以表示多少種顏色?如果布.?幅256X256像素的I6bit的深
度的彩色圖像,其數(shù)據(jù)大小是多少字節(jié)?
16bil深度的彩色圖像可以表示216*2-16*2」6=2-48=281474976710656種顏色;一幅256
X256像素的16bit的深度的彩色圖像的數(shù)據(jù)大小是256*256*16*3/8=393216字節(jié)
3.編寫一個(gè)程序,要求讀取一幅灰度圖像,并對(duì)其像素值進(jìn)行訪問、修改。
import顯
img=cv2.imreadClena.bmp”,0)
cv2.imshow("original”,img)
foriinrange(40.200):
forjinrange(160,200):
img[i.il=0
cv2.imshow("modified”,img)
cv2.waitKey()
cv2.destroyAlIWindows()
4.編寫一個(gè)程序,生成?幅彩色圖像,讓其中的像素值均為隨機(jī)數(shù)。
importnumpyas
img=np.random,randint(0,256,size=[256,256,3],dtype=np.uint8)
cv2.imshow(*image*,img)
cv2.waitKeyO
cv2.destroyAlIWindows()
第3章
1.圖像的位運(yùn)算可以分為哪兒類?
圖像的位運(yùn)算有按位與、按位或、按位異或、按位取反.
2.編寫程序,使用隨機(jī)數(shù)數(shù)組模擬灰度圖像,觀察使用“+”對(duì)像素值求和的結(jié)果。
3.編寫程序,使用函數(shù)cv2.addWeightedO將一幅圖像的感興趣區(qū)域(ROD混合在另外
一幅圖像內(nèi)。
importcv2
inportnunpyasnp
img=cv2.imread(*lena.bmp*,1)
=np.zeros((w,h),dtype=np.uint8)
[100:300,200:100]
=cv2.bitwiseand(img,img,mask=mask)
cv2.imread(*sky.bmp”,1)
result=cv2.addWeiBhted(img,0.6,img2,0.4,0)
imshow("result”,result)
waitKcyO
cv2.destroyAl1Windows()
4.編寫程序,構(gòu)造一個(gè)正方形掩模圖像,將該掩模圖像作為按位與函數(shù)的掩模參數(shù),實(shí)
現(xiàn)保留圖像的指定部分。
importnumpyasnp
cv2.imread(*lena.bmp*,1)
mask=np.zeros((w,h),dtype=np.uint8)
[100:300,200:400]=255
dst-cv2.bitwiseand(irag,img,mask=mask)
cv2.imshow(*img*.img)
cv2.imshcw("mask”,mask)
cv2.imshow("dst",dst)
cv2.waitKeyO
cv2.destroyAHWindows()
第4章
1-什么是三原色原理?
白光通過棱鏡后被分解成多種顏色逐漸過渡的色譜,顏色依次為紅、楂、黃、綠、百、歌、
紫,這就是可見光譜。其中人眼對(duì)紅、綠、薇最為敏感,人的眼暗就像一個(gè)三色接收器的體
系,大多數(shù)的顏色可以通過紅、綠、藍(lán)三色按照不同的比例合成產(chǎn)生。同樣絕大多數(shù)單色光
也可以分解成紅綠藍(lán)三種色光。這是色度學(xué)的城基本原理,即三基色原理.
2.在RGB彩色系統(tǒng)中,每個(gè)RGB分量圖像是一幅8位圖像,共有多少不同的彩色級(jí)?
2.8*2.8*2-8=16777216種彩色
3.編寫程序,將圖像在BGR和RGB色彩空間之間相互轉(zhuǎn)換。
iuport覷
lena=cv2.imread(*1ena.bmp*)
rgblmage=cv2.cvtColor(lena,cv2.COLORIiGR2RGB)
cv2.imshow(*bgrw,lena)
cv2.imshow("rgb”,rgblmage)
cv2.wailKey0
4.編寫程序,調(diào)整HSV色彩空間內(nèi)丫通道的值,觀察其處理結(jié)果。
impoitcv2
=cv2.ireread(*lena.bmp")
=cv2.cvtColor(img,cv2.COLORBGR2HSV:
v=cv2.split(hsv)
hsv2=cv2.merge([hfs,v])
im?2=cv2.cvtColor(hsv2,cv2.COLORHSV2BGR)
cv2.imshowCimg",img)
cv2.imshow(*img2*,img2)
cv2.wailKeyO
destroyAllWindows()
第5章
I.圖像有哪幾種常見的幾何變換?
常見的幾何變換有縮放、翻轉(zhuǎn)、仿射變換、透視、重映射等。
2.圖像旋轉(zhuǎn)會(huì)引起圖像失真嗎,為什么?
圖像旋轉(zhuǎn)會(huì)引起圖像失真,因?yàn)閳D像旋轉(zhuǎn)后會(huì)出現(xiàn)空白點(diǎn),需要進(jìn)行插值處理。
3.在放大?幅圖像時(shí),為什么會(huì)出現(xiàn)馬賽兌現(xiàn)象,有什么解決辦法?
放大圖像后會(huì)出現(xiàn)空白點(diǎn),需要進(jìn)行插值處理,插值不精確時(shí)就會(huì)有馬賽克現(xiàn)象。采用更
精細(xì)的插值方法或者平滑濾波,都可以緩解馬賽克現(xiàn)象。
4.編寫程序,將一幅圖像,逆時(shí)針旋轉(zhuǎn)45度后,再縮小L5倍。
cv2.imread(*1ona.bmp")
ight,width=img.shape[:2]
cv2.getRotationMatrix2D((width/2,height/2),45,1.0/1.5)
rotate=cv2.warpAffine(img,M,(width,height))
imshow("original”,img)
cv2.imshow("rotation”,rotate)
cv2.waitKey()
destroyAlIWindowsO
5.編寫程序,通過指定四個(gè)頂點(diǎn)坐標(biāo),將一幅圖像進(jìn)行透視變換°
importcv2
importnumpyasnp
cv2.imread('lena.bmp')
colsimg
ptsl=np.float32([[150,50],[400,50],[60,450],[310,450]])
pts2=np.float32([[50,50],[rows-50,53],[50,cols-50],[rows50,cols-50]])
M=cv2.getPerspectiveTransform(ptsl,pts2)
Dst=cv2.warpPerspective(img,M,(cols,rows))
cv2.imshow(*iing*,img)
imshow(*dst*,dst)
waitKeyO
第6章
1.簡述均值海波、中值濾波原理,分析比較它們的性能特點(diǎn),并通過實(shí)例說明。
均值灌波是指用當(dāng)前像素點(diǎn)鄰域內(nèi)的NxN個(gè)像素值的均值來代替當(dāng)前像素值。中值漁波法
它將每一像素點(diǎn)的灰度值設(shè)fit為該點(diǎn)某鄰域窗口內(nèi)的所有像素點(diǎn)灰度值的中值。均值涌波
是線性平滑技術(shù),中值港波是非線性平滑技術(shù)。均值港波可以消除噪音,會(huì)使圖像整體變
模糊。中值漉波能消除孤立的噪聲點(diǎn)。實(shí)例說明略。
2.高斯通波函數(shù)有哪些重要特性?
<1)二維高斯函數(shù)具TT旋轉(zhuǎn)對(duì)稱性,即濾波器在各個(gè)方向上的平滑程度是相同的。
(2)高斯函數(shù)是單值函數(shù)
(3)高斯函數(shù)的傅立葉變換頻譜是單^的。
(4)高斯濾波器寬度(決定著平滑程度)是由參數(shù)。表征的,而且。和平滑程度的關(guān)系是
非常簡單的。
(5)由于高斯函數(shù)的可分離性,較大尺寸的高斯海波器可以得以有效地實(shí)現(xiàn)。
3.對(duì)于椒鹽噪聲圖像,哪種濾波效果最好?通過程序?qū)崿F(xiàn)結(jié)果說明。
中值濾波效果最好。程序?qū)崿F(xiàn):
img=cv2.imreadflenanoise.jpg”,0)
cv2.medianBlur(img,5)
cv2.imshowC*original*,img)
cv2.imshow("result”,dst)
waitKeyO
cv2.destroyA11Windows0
4.編寫程序,自定義一個(gè)2D卷積海波,并對(duì)圖像進(jìn)行處理.
importnumpyasnp
img=cv2.imread(*lenanoise.jpg*.0)
kernel=np.ones((3,3),np.float32)/9
=cv2.filter2D(img,kernel)
imshow("original”,img)
cv2.imshow(*dst*,dst)
2waitKey()
destroyAl1Windows()
5.為什么中值源波核的大小必須為奇數(shù)?
因?yàn)橹挥衅鏀?shù)才有中值。偶數(shù)的話就沒有中間值。
第7章
1.簡述Sobel算子、Schan?算子、拉普拉斯算子的原理,分析比較它們的性能特點(diǎn),并
通過實(shí)例說明。
Sobel算子是把圖像中每個(gè)像素的9個(gè)相鈉像素點(diǎn)(包含該像素本身)的灰度值加權(quán)求
和,在邊緣處達(dá)到極值從而檢測邊緣:Scharr算子,該算子具有和Sobel算子同樣的
速度,且精度更高??梢詫charr算子看作對(duì)Sobel算子的改進(jìn):Laplacian(拉普拉
斯)算子是一種二階導(dǎo)數(shù)算子,其具有旋轉(zhuǎn)不變性,可以滿足不同為的圖像邊緣銳化
(邊緣檢測)的要求。通常情況下,其算子的系數(shù)之和需要為零。實(shí)例說明略。
2.拉抨拉斯算子為什么能銳化圖像邊緣?
從卷積的形式來看,如果在圖像中的一個(gè)比較暗的區(qū)域出現(xiàn)了一個(gè)亮點(diǎn),那么經(jīng)過拉普拉
斯算子處理后,這個(gè)亮點(diǎn)會(huì)變得更亮。因?yàn)樵谝粋€(gè)很暗的區(qū)域內(nèi),很亮的點(diǎn)和其周圍的點(diǎn)
屬于差異比較大的點(diǎn),在圖像匕差異大就是這個(gè)亮點(diǎn)與周圍點(diǎn)的像素在數(shù)值上的差值大。
那么基于二階微分的拉普拉斯算子就是求取這種像素值發(fā)生突然變換的點(diǎn)或線,此算子卻
可用二次微分止峰和負(fù)峰之間的過零點(diǎn)來確定,對(duì)孤立點(diǎn)或端點(diǎn)更為敏感,因此特別適用
于檢出圖像中的孤立點(diǎn)、孤立線或線端點(diǎn)為目的的場合。
3.對(duì)于旋轉(zhuǎn)后的圖像,哪種梯度算子效果最好?通過程序?qū)崿F(xiàn)結(jié)果說明。
Schaw算子檢出的邊緣細(xì)節(jié)更多。程序?qū)崿F(xiàn)略。
4.編寫程序,自定義一個(gè)圖像梯度算子,并對(duì)圖像進(jìn)行處理。
importcv2
img=cv2.imreadClena.bmp',cv2.IMREAEGRAYSCALE)
Sobelx=cv2.Sobel(img,cv2.CV64F,0.9,0)
Sobely=cv2.Sobel(img,cv2.CV64F,0,0.9)
Sobelx=cv2.convertScaleAbs(Sobelx)
Sobely=cv2.convertScaleAbs(Sobely)
Sobelxy=cv2.addWeighted(Sobelx,0.4,Sobely,0.6,0)
cv2.imshow("original”,img)
cv2.imshow(*xy*,Sobelxy)
cv2.waitKeyO
cv2.destroyA11Windows0
第8章
1.編寫程序,讀入一幅圖像,計(jì)算并顯示其直方圖。
importmatplot1ib.pyplotaspit
=cv2.imread(*lena.
cv2.imshow("original",
pit.hist(inig.ravel0,256)
cv2.waitKeyO
cv2.destrovA11Windows0
2.為什么在一般情況下對(duì)離散圖像的直方圖均衡化并不能產(chǎn)生完全平坦的直方圖?
理由是:(1)直方圖是近似概率密度函數(shù),(2)簡并現(xiàn)象的存在使處理的灰度級(jí)總是要減少
的,這是像素灰度有限的必然結(jié)果。均衡化只是近似的,其結(jié)果只能是產(chǎn)生近似均勻的直方圖。
3.編寫程序,讀入一幅圖像,對(duì)其進(jìn)行直方圖均衡化,并畫出處理前后的直方圖。
importmatplotlib.pyplotaspit
img=cv2.imreadClena.bmp,,0)
equ=cv2.equalizeHist(img)
imshow("original”,img)
cv2.imshow("resuIt”,equ)
It.figure("原始圖像直方ST)
pit.hist(img.ravel(),256)
plI.figure("均衡化結(jié)果直方圖")
pit.hist(equ.rave1(),256)
cv2.waitKeyO
destroy.MlWindows()
第9章
1.編寫程序,利用繪制線段函數(shù),在一幅圖像上繪制一個(gè)三角形。
=cv2.imread("lena.bmp")
img=cv2.line(img,(0,0),(n,n),(255,00),3)
img=cv2.line(img,(0,n),(n,n),(255,0,0),3)
cv2.line(img,(0,0),(0,n),(255,0.0),3)
iiDshow(*img*?img)
waitKeyO
destroyAlIWindows
2.編寫程序,利用多邊形繪制函數(shù),在一幅可像上繪制一個(gè)三角形。
importnumpyasnp
importcv2
img=cv2.imread(*lena.bmp*)
pts=np.array([[0,0],[400,400],[0,400]].np.int32)
#牛.成各個(gè)頂點(diǎn),注意數(shù)據(jù)類型為int32
pts=pts.reshape((-1,1,2))
#第1個(gè)參數(shù)為-1,表明它未設(shè)置具體值,它所表示的維度值是通過其他參數(shù)值計(jì)算得到的
cv2.polylines(img,[pts],True,(0?255,0)8)
#調(diào)用函數(shù)cv2.polylines。完成多邊形繪圖。注意,第3個(gè)參數(shù)控制多邊形是否封閉
cv2.destroyAl1Windows()
3.編寫程序,在一幅圖像上繪制圓圈,并在31中繪制文字。
importcv2
d=400
cv2.imrcadC*lena.bmp")
(centerX,centerY)=(round(img.shape[1]/2).round(img.shape[0]/2))
red=(0,0,255)
cv2.circle(img,(centerX,centerY),200,red,3)
font=cv2,FONT_HERSHEY_SIMPLEX
cv2.putText(img,'Lena,(100,200),font,3,(0,255,0),15)
cv2.putText(img,'Lena",(100,200),font,3,(0,0,255),5)
cv2.imshow(*img*,img)
cv2.waitKeyO
cv2.destroyAlIWindows()
第10章
1.一幅原始尺寸為512*512的圖像,最多可以生成多少層的圖像金字塔?
512->256->128->64->32->16->8->4->2-)1
共9層圖像金字塔。
2.編寫程序,使用函數(shù)cv2.pyrDown()對(duì)一隔圖像進(jìn)行向下采樣至原始大小的16分之1,
并顯示。
cv2.imrcad("lcna.bmp”,cv2.IMREADGRAYSCALE)
cv2.dcstroyAlIWindows()
3.編寫程序,使用函數(shù)c\2pyrUp()對(duì)一幅圖像進(jìn)行向上采樣至原始大小的8倍,并顯示。
img-cv2.imread(*1ena-sma11.bmp*,cv2.IMREADGRAYSCALE)
rl=cv2.pyrUp(img)
cv2.imshow("rl",rl)
cv2.waitKcyO
cv2.destroyAlIWindows()
第11章
1.編寫程序,使用Hairis角點(diǎn)檢測方法對(duì)自然圖像進(jìn)行角點(diǎn)檢測。
importcv2
importnumpyasnp
cv2.imrcad(fi1ename)
cv2.cvtColor(img,cv2.C0L0R_BGR2GRAY)
dst=cv2.cornerHarris(gray,2,3,0.04)
cv2.dilatc(dst,None)
imgEdst>0.01*dst.maxO]=[0,0,2E5]
cv2.namedWindowCimage',cv2.WINDOWNOFMAL)
cv2.imshow(,image*,img)
cv2.destroyAHWindowsO
2.編寫程序,對(duì)同一幅圖像,比較SIFT和SIRF抽取特征的時(shí)間。
gray=cv2.cvtColor(img,cv2.C0L0R_BGR2GRAY)
start_time=time.t
ift=cv2.xfeatures2d.SIFTcrea
關(guān)鍵點(diǎn)找出sift特征向量
time=time.time
print(end_time-start_time)
ret=cv2.drawKcypoints(gray,kp,img)
imshowC*ret*,ret)
dcstroyAlIWindowsO
starttime=tin?e.ti
surf=cv2.xfeatures2d.SURF_create(400)#SURFHessian的閾值
kp,des-surf,detectAndCompute(img,Nene)
time=lime.time
print(end_time-start_time)
cv2.drawKeypoints(img,kp.
img,門ags=cv2.DRAWMATCHES_FLAGS_DRAW』ICH_KEYPOINTS)也會(huì)制關(guān)鍵點(diǎn)
cv2.imshowfimg”,img)
waitKcy()
cv2.destroyAlIWindows()
3.編寫程序,對(duì)兩岫圖像進(jìn)行SIFT特征檢冽并做k近鄰匹配
importcv2
imgl=c\2imreadChousel.bmp”,cv2.IMREAD_GRAYSCALE)
img2;cv2.imread(*house2.bmp*,cv2.IMREADGRAYSCALE)
siftl=cv2.xfeatures2d.SIFTcreate
kpl,desl-siftl.compute(imgl,kpl)
sift2=cv2.xfcatures2d.SIFTcrcateC
kp2,des2-sifl2.compute(img2,kp2)
=cv2.BFMatcher(cv2.NORMAL1,crossCheck=False)
matches-bf.knnMatch(sample,sample2,k=l)
img3=cv2.drawMatchesKnn(inigl,kpl,img2,kp2,matches,img2,fl
imshow(*result*,img3)
cv2.imwrite(*ma
cv2.waitKeyO
cv2.dcstroyAlIWindowsO
第12章
1.簡述積分圖像快速計(jì)算Haa%征的原理租計(jì)算方法,并編寫程序?qū)崿F(xiàn)。
對(duì)于一個(gè)灰度圖像1而言,其積分圖ii也是一張與1尺寸相同的圖,只不過該圖上任意一點(diǎn)
(X,y)的值是指從灰度圖像I的左上角與當(dāng)前點(diǎn)所圉成的矩形區(qū)域內(nèi)所有像素點(diǎn)灰度值之
和,積分圖構(gòu)造好之后,圖像中任何矩陣區(qū)域的像素累加和都可以通過簡單運(yùn)算得到。
importcv2
importnumpyasnp
imgl-cv2.inu*ead(,lena.bmp*)
intejil=cv2.integral(imgl)#
integl-integl/np.max(integl)*255#轉(zhuǎn)為0~255的uint8類型,方便畫圖
integl=np.array(integl,dtype=*ui
naraedWindowC,imgl',0)
imshowCimgT,imgl'
cv2.namcdWindow(*integl',0)
cv2.imshowC,integl,,integl)
cv2.destroyAlIWindowsO
2.編寫程序,使用EigenFishfaccs實(shí)現(xiàn)人臉識(shí)別。
importnurapyasnp
images.append(cv2.imread(*faces-training/g1.bmp*,cv2.IMREADGRAYSCALE))
images.append(cv2.imread(*faces-training/g2.bmp*,cv2.1MREADGRAYSCALE))
images.append(cv2.imread("faces-lraining/sl.bmp”,cv2.IMREAD_GRAYSCALE))
images,append(cv2.imread(*faces-traininj/s2.bmp”,cv2.IMREAD_GRAYSCALE))
labels=[0,0,1,1]
recognizer=cv2.face.EigenFaceRecognizsr_create()
recognizer,train(images,np.array(labels))
ctimaEC=cv2.imread(*faccs-1raining/g3.bmp*,cv2.IMREADGRA'
label,confidence=recognizer,predict(predict_image)
print(*label=*,label)
int("confidence—,confidence)
第13章
1.簡述HOG特征的原理和計(jì)算方法,并比較與其他特征的優(yōu)缺點(diǎn)。
HOG的基本思想就是對(duì)檢測窗口(在圖像中滑動(dòng))進(jìn)行分割以形成塊(Block)和單元格(Cell),
然后計(jì)算:每個(gè)像素的梯度(包括方向和幅值),再以塊為班位統(tǒng)計(jì)每個(gè)雎元格的加權(quán)直方
圖,最后將各個(gè)年元格和塊內(nèi)的直方圖進(jìn)行縱聯(lián)形成HOG描述符。
優(yōu)點(diǎn):
(DH0G表示的是邊緣(梯度)的結(jié)構(gòu)特征,因此可以描述局部的形狀信息;
(2)位置和方向空間的量化一定程度上可以抑制平移和旋轉(zhuǎn)帶來的影響:
(3)采取在局部區(qū)域歸一化直方圖,可以部分抵消光照變化帶來的影響:
(4)由于一定程度忽略了光照顏色對(duì)圖像造成的影響,使得圖像所需要的表征數(shù)據(jù)
的鼐度降低了:
(5)而且由于這種分塊分單元的處理方法,也使得圖像局部像索?點(diǎn)之間的關(guān)系可以
很好得到表征。
缺點(diǎn):
(1)描述符生成過程冗長,導(dǎo)致速度慢,實(shí)時(shí)性差:批注口1]:描述符?
(2)很難處理遮擋問題:
(3)由于梯度的性質(zhì),該描述符對(duì)噪點(diǎn)相當(dāng)敏感。
2.編寫程序,比較使用和不使用非極大值并制做行人檢測的效果。
importcv2
hog=cv2.HOGDescriptorO
hog.sctSVMDetcctor(cv2.HOGDcscriptorgetDcfaultPeopleDetcctor())
#檢測圖片中的行人
(rects,weight)=hog.detectMultiScale(src,
winStride=(2,4),padding=(8,8),seale=l.2,usaMeanshiftGrouping=Fa1se)
(x,y,w,h)inrects:
cv2.rectangle(sre,(x,y),(x+w,y+h),(0,255,0),
cv2.imshow(*hog-detectorl*?sre)
(rects.weight)hog.detectMultiScale(src,
winStride=(2,4),padding=(8,8),scale=l.2,ussMeanshiftGrouping=True)
for(x,y,w,h)inrects
cv2.rectangle(sre,(x,y),(x+w,y+h),(0,255,0),
waitKey(O)
cv2.destroyAl1Windows()
第14章
1.簡述網(wǎng)絡(luò)爬蟲的工作流程。
網(wǎng)絡(luò)爬蟲的主要思想是模擬人的瀏覽操作,在這種模擬的基礎(chǔ)上,解析網(wǎng)頁并提取數(shù)
據(jù)。網(wǎng)絡(luò)爬蟲的具體工作流程如下:
首先選取一部分精心多腕的種子URL(網(wǎng)絡(luò)地址)開始抓取。Pyhon語言提供了很多類似
的函數(shù)庫或框架,如uilib、reguest、scrapy等,通過模擬真實(shí)用戶瀏覽網(wǎng)頁行為,
獲取URL所對(duì)應(yīng)網(wǎng)頁。
然后,將這些URL放入待抓取URL隊(duì)列.通過對(duì)上一步獲取的網(wǎng)頁代碼進(jìn)行解析,可以
通過re(正則表達(dá)式)BeaoifulSoup4.HIMLParser等函數(shù)庫來處理,提取出一系列的
URL和目標(biāo)數(shù)據(jù)。這些URL會(huì)被網(wǎng)絡(luò)爬蟲加入到待抓取的URL列表中,而感興趣的數(shù)據(jù)
則被保存到指定位置。
接下來,從待抓取URL隊(duì)列中取出待抓取在URL,解析DNS,并且得到主機(jī)的ip,并將
URL對(duì)應(yīng)的網(wǎng)頁下載下來,存儲(chǔ)進(jìn)已下載網(wǎng)頁庫中。此外,將這些URL放進(jìn)已抓取URL
隊(duì)列。
最后,從上?步獲取到的網(wǎng)頁中提取URL和目標(biāo)數(shù)據(jù),URL加入到待抓取列表中等待下
?次網(wǎng)絡(luò)爬蟲訪問,目標(biāo)數(shù)據(jù)則保存到指定位置,從而進(jìn)入下?個(gè)循環(huán)。
2.編寫程序,自己尋找一些帶圖片的網(wǎng)頁,爬取網(wǎng)頁上的圖片并下載。
importrequests
url=*https://ticba.baidu.co<n/p/604547,1546,
(*l,ser-Agent*:*Mozilla/5.0(WindowsKT
0.0:Win64:x64;rv:70.0)Gecko/20100101FirefW70.0*)
reques
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度版權(quán)轉(zhuǎn)讓合同標(biāo)的權(quán)利義務(wù)
- 2024年度鋁合金門窗安裝工程設(shè)備租賃協(xié)議
- 大學(xué)端午節(jié)活動(dòng)的總結(jié)范文5篇
- 飲食安全演講稿400字左右樣版5篇
- 紅酒促銷活動(dòng)方案范文(6篇)
- 家電供貨合同范例
- 城市書房服務(wù)合同模板
- 代理階級(jí)合同范例
- 寵物醫(yī)院醫(yī)生合同范例
- 一般教師合同模板
- 2024年動(dòng)遷房購買合同范本
- JJG 165-2024鐘罩式氣體流量標(biāo)準(zhǔn)裝置檢定規(guī)程
- 江西省萍鄉(xiāng)市2024-2025學(xué)年高二上學(xué)期期中考試地理試題
- 新版加油站安全操作規(guī)程
- 2023年貴州黔東南州州直機(jī)關(guān)遴選公務(wù)員考試真題
- 貨物質(zhì)量保證措施方案
- 黑龍江省龍東地區(qū)2024-2025學(xué)年高二上學(xué)期階段測試(二)(期中) 英語 含答案
- 4S店展廳改造裝修合同
- (培訓(xùn)體系)2020年普通話測試培訓(xùn)材料
- 3-4單元測試-2024-2025學(xué)年統(tǒng)編版語文六年級(jí)上冊
- 北師版數(shù)學(xué)八年級(jí)上冊 5.8三元一次方程組課件
評(píng)論
0/150
提交評(píng)論