代码里无图片地址_项目实战:爬高清图片
↑?關(guān)注 + 星標(biāo)?,后臺回復(fù)【大禮包】送你2TPython自學(xué)資料
好消息:Python學(xué)習(xí)交流群,已經(jīng)建立,猛戳加入
之前我發(fā)過一些爬蟲的文章,不過一直沒發(fā)過爬取圖片的,今天就給大家分享一篇吧!/1 前言/
????上篇文章我們談及了天堂網(wǎng)站圖片抓取的理論,這篇文章將針對上篇文章的未盡事宜進(jìn)行完善,完成圖片的批量抓取。
/2 圖片網(wǎng)址解析/
??? 1. 我們首先來分析一下這個(gè)圖片的地址在哪里。我們選擇圖片,然后右擊網(wǎng)頁檢查,可以看到圖片的路徑,如下圖所示。
??? 2. 將其單獨(dú)放出來,如下圖所示。
??? 3. 可以看到就是圖片的鏈接,而src就圖片的地址,所以我們可以找它的上一級標(biāo)簽
。如果再找不到那就再找上一級以此類推(找到越詳細(xì)內(nèi)容更準(zhǔn)確)。使用選擇器xpath,獲取到src的值(網(wǎng)址后綴)之后,將后綴加上“https前綴”就可以得到每一個(gè)網(wǎng)址,如下圖所示:??? 4. 之后嘗試運(yùn)行,如下圖所示,可以獲取到具體的網(wǎng)址。
??? 5. 我們再對這個(gè)網(wǎng)址進(jìn)行請求(參考一個(gè)請求的方法)分析數(shù)據(jù)。
??? 6. 我們以這個(gè)魚的圖片為例,點(diǎn)擊它來到二級頁面。
??? 7. 右鍵檢查 可以看到我們要獲取的是src的地址,如下圖所示。
??? 8. 獲取圖片的源碼,如下圖所示。
??? 9. Xpath 獲取到路徑,為了方便區(qū)分圖片的名字,如下圖所示。
/3?下載圖片/
??? 1. 為方便儲存,新建一個(gè)filename來作為保存的路徑,如下圖所示。
??? 2. 也就是說你需要在Python代碼的同級目錄,提前新建一個(gè)文件夾,名叫“天堂網(wǎng)爬的圖片”,如果沒有這個(gè)文件夾的話,將會報(bào)下圖的錯(cuò)。
??? 3. 使用with函數(shù)進(jìn)行文件的打開和寫入,下方代碼的含義是創(chuàng)建一個(gè)文件,代碼框里邊有具體的注釋。
"wb"?#?意思是以二進(jìn)制格式打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。"as?f"?#?意思是寫入一個(gè)叫f的文件。"f.wirite(html)"?#?意思是說把html的內(nèi)容寫入f這個(gè)文件。??? 4. 下面是各個(gè)編碼代表的含義,可以學(xué)習(xí)一下。
??? 5. 基于以上代碼,基本上就可實(shí)現(xiàn)批量下載。接下來,我們繼續(xù)優(yōu)化一下。我們導(dǎo)入一個(gè)叫fake_useragent的庫 fake_useragent第三方庫,來實(shí)現(xiàn)隨機(jī)請求頭的設(shè)置。
fromfake_useragent import UserAgent ua =UserAgent()print(ua.ie) #隨機(jī)打印ie瀏覽器任意版本print(ua.firefox)#隨機(jī)打印firefox瀏覽器任意版本print(ua.chrome) #隨機(jī)打印chrome瀏覽器任意版本print(ua.random) #隨機(jī)打印任意廠家的瀏覽器????6. 我們可以再初始化init方法,添加ua.random,讓它隨機(jī)的產(chǎn)生;其中UserAgent代碼如圖:(這里設(shè)置隨機(jī)產(chǎn)生50個(gè)挑選其中一個(gè)進(jìn)行請求)
??? 7. 最終實(shí)現(xiàn)的效果圖,終端顯示如下圖所示。
????8.?將圖片自動下載到本地后的效果圖,高清的噢~
???? 9. 至此,針對解析出來的圖片地址予以批量下載的任務(wù)已經(jīng)完成,接下來自己可以開心的去瀏覽圖片啦。
??? 10. 不建議大家爬取太多數(shù)據(jù),這樣會給服務(wù)器增大負(fù)載,淺嘗輒止即可。
/4 小結(jié)/
????本文基于理論篇,通過Python 中的爬蟲庫?requests 、lxml、fake_useragent,帶大家進(jìn)行網(wǎng)頁結(jié)構(gòu)的分析以及網(wǎng)頁圖片地址數(shù)據(jù)的提取,并且針對解析出來的圖片地址予以批量下載,方法行之有效,歡迎大家積極嘗試。
如果對本文源碼感興趣,網(wǎng)頁打開鏈接直接下載??
https://alltodata.cowtransfer.com/s/a794ef3ab7e54f
推薦兩個(gè)團(tuán)隊(duì)技術(shù)號
Github研習(xí)社:目前是由國內(nèi)985博士,碩士組成的團(tuán)體發(fā)起并運(yùn)營,主要分享和研究業(yè)界開源項(xiàng)目,學(xué)習(xí)資源,程序設(shè)計(jì),學(xué)術(shù)交流。回復(fù)就無套路送你一份自學(xué)大禮包。機(jī)器學(xué)習(xí)研習(xí)社目前是由國內(nèi)985博士,碩士組成的團(tuán)體發(fā)起并運(yùn)營。主要分享和研究機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、NLP 、Python,大數(shù)據(jù)等前沿知識、干貨筆記和優(yōu)質(zhì)資源。回復(fù)就無套路送你一份機(jī)器學(xué)習(xí)大禮包。推薦閱讀10000字Pandas基礎(chǔ)+進(jìn)階筆記!如果你覺得文章有幫助,點(diǎn)個(gè)“好看”總結(jié)
以上是生活随笔為你收集整理的代码里无图片地址_项目实战:爬高清图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金额转换java_java金额转换
- 下一篇: Linux 底层原理 —— epoll