Python爬蟲爬取煎蛋網(wǎng)圖片代碼實(shí)例
這篇文章主要介紹了Python爬蟲爬取煎蛋網(wǎng)圖片代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
今天,試著爬取了煎蛋網(wǎng)的圖片。
用到的包:
- urllib.request
- os
分別使用幾個(gè)函數(shù),來控制下載的圖片的頁數(shù),獲取圖片的網(wǎng)頁,獲取網(wǎng)頁頁數(shù)以及保存圖片到本地。過程簡(jiǎn)單清晰明了
直接上源代碼:
import urllib.request import os def url_open(url): req = urllib.request.Request(url) req.add_header('user-agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36') response = urllib.request.urlopen(url) html = response.read() return html def get_page(url): html = url_open(url).decode('utf-8') a = html.find('current-comment-page')+23 b = html.find(']',a) return html[a:b] def find_imgs(url): html = url_open(url).decode('utf-8') img_addrs = [] a = html.find('img src=') while a != -1: b = html.find('.jpg',a ,a+255) if b != -1: img_addrs.append('https:'+html[a+9:b+4]) # 'img src='為9個(gè)偏移 '.jpg'為4個(gè)偏移 else: b = a+9 a = html.find('img src=', b) return img_addrs def save_imgs(folder, img_addrs): for each in img_addrs: filename = each.split('/')[-1] with open(filename, 'wb') as f: img = url_open(each) f.write(img) print(img_addrs) def download_mm(folder = 'xxoo', pages = 5): os.mkdir(folder) os.chdir(folder) url = 'http://jandan.net/ooxx/' page_num = int(get_page(url)) for i in range(pages): page_num -= i page_url = url + 'page-'+ str(page_num) + '#comments' img_addrs = find_imgs(page_url) save_imgs(folder, img_addrs) if __name__ == '__main__': download_mm()
其中在主函數(shù)download_mm()中,將pages設(shè)置在了5面。
本來設(shè)置的是10,但是在程序執(zhí)行的過程中。出現(xiàn)了404ERROR錯(cuò)誤
即imgae_url出現(xiàn)了錯(cuò)誤。嘗試著在save_img()函數(shù)中加入了測(cè)試代碼:print(img_addrs),
想到會(huì)不會(huì)是因?yàn)楹竺骓摂?shù)的圖片,img_url的格式出現(xiàn)了改變,導(dǎo)致404,所以將pages改成5,
再次運(yùn)行,結(jié)果沒有問題,圖片能正常下載:
仔細(xì)觀察發(fā)現(xiàn),剛好是在第五面的圖片往后,出現(xiàn)了不可下載的問題(404)。所以在煎蛋網(wǎng)上,我們直接跳到第6面查看圖片的url。
上圖是后5面的圖片url,下圖是前5面的圖片url
而源代碼中,尋找的圖片url為使用find()函數(shù),進(jìn)行定為<img src=‘'> <.jpg>中的圖片url,所以后5面出現(xiàn)的a href無法匹配,即出現(xiàn)了404 ERROR。如果想要下載后續(xù)的圖片,需要重新添加一個(gè)url定位
即在find中將 img src改成 a href,偏移量也需要更改。
總結(jié):
使用find()來定位網(wǎng)頁標(biāo)簽確實(shí)太過low,所以以后在爬蟲中要盡量使用正則表達(dá)式和Beautifulsoup包來提高效率,而這兩項(xiàng)我還不是特別熟,所以需要更多的訓(xùn)練。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于Python爬蟲采集天氣網(wǎng)實(shí)時(shí)信息
- python解析中國(guó)天氣網(wǎng)的天氣數(shù)據(jù)
- Python爬蟲實(shí)戰(zhàn)之使用Scrapy爬取豆瓣圖片
- Python爬蟲之教你利用Scrapy爬取圖片
- python爬蟲如何解決圖片驗(yàn)證碼
- python爬蟲爬取圖片的簡(jiǎn)單代碼
- Python 爬蟲批量爬取網(wǎng)頁圖片保存到本地的實(shí)現(xiàn)代碼
- Python爬蟲抓取指定網(wǎng)頁圖片代碼實(shí)例
- Python3簡(jiǎn)單爬蟲抓取網(wǎng)頁圖片代碼實(shí)例
- Python爬蟲獲取圖片并下載保存至本地的實(shí)例
- python 爬取天氣網(wǎng)衛(wèi)星圖片
相關(guān)文章
OpenCV哈里斯(Harris)角點(diǎn)檢測(cè)的實(shí)現(xiàn)
這篇文章主要介紹了OpenCV哈里斯 (Harris)角點(diǎn)檢測(cè),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Python tkinter事件高級(jí)用法實(shí)例
這篇文章主要介紹了Python tkinter事件高級(jí)用法,結(jié)合實(shí)例形式分析了Python使用tkinter模塊的事件響應(yīng)及圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-01-01python中cv2.projectPoints的用法小結(jié)
這篇文章主要介紹了python中cv2.projectPoints的用法,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-12-12tensorflow實(shí)現(xiàn)從.ckpt文件中讀取任意變量
這篇文章主要介紹了tensorflow實(shí)現(xiàn)從.ckpt文件中讀取任意變量,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05Pycharm 如何連接遠(yuǎn)程服務(wù)器并debug調(diào)試
本文主要介紹了Pycharm 如何連接遠(yuǎn)程服務(wù)器并debug調(diào)試,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06關(guān)于Java中RabbitMQ的高級(jí)特性
這篇文章主要介紹了關(guān)于Java中RabbitMQ的高級(jí)特性,MQ全稱為Message Queue,即消息隊(duì)列,"消息隊(duì)列"是在消息的傳輸過程中保存消息的容器,它是典型的:生產(chǎn)者、消費(fèi)者模型,生產(chǎn)者不斷向消息隊(duì)列中生產(chǎn)消息,消費(fèi)者不斷的從隊(duì)列中獲取消息,需要的朋友可以參考下2023-07-07Python實(shí)現(xiàn)抓取頁面上鏈接的簡(jiǎn)單爬蟲分享
這篇文章主要介紹了Python實(shí)現(xiàn)抓取頁面上鏈接的簡(jiǎn)單爬蟲分享,本文使用了一個(gè)開源模塊requests實(shí)現(xiàn)需求,需要的朋友可以參考下2015-01-01