Python爬蟲(chóng)爬取煎蛋網(wǎng)圖片代碼實(shí)例
這篇文章主要介紹了Python爬蟲(chóng)爬取煎蛋網(wǎng)圖片代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
今天,試著爬取了煎蛋網(wǎng)的圖片。
用到的包:
- urllib.request
- os
分別使用幾個(gè)函數(shù),來(lái)控制下載的圖片的頁(yè)數(shù),獲取圖片的網(wǎng)頁(yè),獲取網(wǎng)頁(yè)頁(yè)數(shù)以及保存圖片到本地。過(guò)程簡(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面。
本來(lái)設(shè)置的是10,但是在程序執(zhí)行的過(guò)程中。出現(xiàn)了404ERROR錯(cuò)誤
即imgae_url出現(xiàn)了錯(cuò)誤。嘗試著在save_img()函數(shù)中加入了測(cè)試代碼:print(img_addrs),

想到會(huì)不會(huì)是因?yàn)楹竺骓?yè)數(shù)的圖片,img_url的格式出現(xiàn)了改變,導(dǎo)致404,所以將pages改成5,
再次運(yùn)行,結(jié)果沒(méi)有問(wèn)題,圖片能正常下載:

仔細(xì)觀察發(fā)現(xiàn),剛好是在第五面的圖片往后,出現(xiàn)了不可下載的問(wèn)題(404)。所以在煎蛋網(wǎng)上,我們直接跳到第6面查看圖片的url。

上圖是后5面的圖片url,下圖是前5面的圖片url

而源代碼中,尋找的圖片url為使用find()函數(shù),進(jìn)行定為<img src=‘'> <.jpg>中的圖片url,所以后5面出現(xiàn)的a href無(wú)法匹配,即出現(xiàn)了404 ERROR。如果想要下載后續(xù)的圖片,需要重新添加一個(gè)url定位
即在find中將 img src改成 a href,偏移量也需要更改。
總結(jié):
使用find()來(lái)定位網(wǎng)頁(yè)標(biāo)簽確實(shí)太過(guò)low,所以以后在爬蟲(chóng)中要盡量使用正則表達(dá)式和Beautifulsoup包來(lái)提高效率,而這兩項(xiàng)我還不是特別熟,所以需要更多的訓(xùn)練。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于Python爬蟲(chóng)采集天氣網(wǎng)實(shí)時(shí)信息
- python解析中國(guó)天氣網(wǎng)的天氣數(shù)據(jù)
- Python爬蟲(chóng)實(shí)戰(zhàn)之使用Scrapy爬取豆瓣圖片
- Python爬蟲(chóng)之教你利用Scrapy爬取圖片
- python爬蟲(chóng)如何解決圖片驗(yàn)證碼
- python爬蟲(chóng)爬取圖片的簡(jiǎn)單代碼
- Python 爬蟲(chóng)批量爬取網(wǎng)頁(yè)圖片保存到本地的實(shí)現(xiàn)代碼
- Python爬蟲(chóng)抓取指定網(wǎng)頁(yè)圖片代碼實(shí)例
- Python3簡(jiǎn)單爬蟲(chóng)抓取網(wǎng)頁(yè)圖片代碼實(shí)例
- Python爬蟲(chóng)獲取圖片并下載保存至本地的實(shí)例
- python 爬取天氣網(wǎng)衛(wèi)星圖片
相關(guān)文章
Python利用標(biāo)簽實(shí)現(xiàn)清理微信好友的自動(dòng)化腳本
微信已經(jīng)成為我們?nèi)粘I钪胁豢苫蛉钡纳缃还ぞ?隨著使用時(shí)間的增長(zhǎng),我們的微信好友列表可能會(huì)變得越來(lái)越臃腫,所以本文為大家準(zhǔn)備了通過(guò)標(biāo)簽清理微信好友的Python自動(dòng)化腳本,希望對(duì)大家有所幫助2024-12-12
通過(guò)案例解析python鴨子類型相關(guān)原理
這篇文章主要介紹了通過(guò)案例解析python鴨子類型相關(guān)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
python調(diào)用百度REST API實(shí)現(xiàn)語(yǔ)音識(shí)別
這篇文章主要為大家詳細(xì)介紹了python調(diào)用百度REST API實(shí)現(xiàn)語(yǔ)音識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
對(duì)python cv2批量灰度圖片并保存的實(shí)例講解
今天小編就為大家分享一篇對(duì)python cv2批量灰度圖片并保存的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
利用Python封裝MySQLHelper類實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪改查功能
Python 連接 MySQL 的方法有很多,常用的有 pymysql 和 mysql-connector-python 兩種庫(kù),本文主要介紹了如何封裝一個(gè)MySQLHelper類,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的增刪改查功能,感興趣的可以了解一下2023-06-06

