這篇文章主要介紹了Python爬蟲爬取煎蛋網圖片代碼實體,文中通過示例代碼介紹的非常詳細,對大家的學習或者作業具有一定的參考學習價值,需要的朋友可以參考下
今天,試著爬取了煎蛋網的圖片,在這里順便給大家推薦一個資源很全的python學習免廢解答.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,這里有資深程式員分享以前學習心得,學習筆記,還有一線企業的作業經驗,且給大家精心整理一份python零基礎到專案實戰的資料,每天給大家講解python最新的技術,前景,學習需要留言的小細節
用到的包:
urllib.request
os
分別使用幾個函式,來控制下載的圖片的頁數,獲取圖片的網頁,獲取網頁頁數以及保存圖片到本地,程序簡單清晰明了
直接上源代碼: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='https://www.cnblogs.com/chengxuyuanaa/p/)
while a != -1:
b = html.find('.jpg',a ,a+255)
if b != -1:
img_addrs.append('https:'+html[a+9:b+4]) # 'img src='https://www.cnblogs.com/chengxuyuanaa/p/為9個偏移'.jpg'為4個偏移
else:
b = a+9
a = html.find('img src='https://www.cnblogs.com/chengxuyuanaa/p/, 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()
其中在主函式download_mm()中,將pages設定在了5面,
本來設定的是10,但是在程式執行的程序中,出現了404ERROR錯誤
即imgae_url出現了錯誤,嘗試著在save_img()函式中加入了測驗代碼:print(img_addrs),
想到會不會是因為后面頁數的圖片,img_url的格式出現了改變,導致404,所以將pages改成5,
再次運行,結果沒有問題,圖片能正常下載:
仔細觀察發現,剛好是在第五面的圖片往后,出現了不可下載的問題(404),所以在煎蛋網上,我們直接跳到第6面查看圖片的url,
上圖是后5面的圖片url,下圖是前5面的圖片url
而源代碼中,尋找的圖片url為使用find()函式,進行定為<img src=https://www.cnblogs.com/chengxuyuanaa/p/‘’> <.jpg>中的圖片url,所以后5面出現的a href無法匹配,即出現了404 ERROR,如果想要下載后續的圖片,需要重新添加一個url定位
即在find中將 img src改成 a href,偏移量也需要更改,
總結:
使用find()來定位網頁標簽確實太過low,所以以后在爬蟲中要盡量使用正則運算式和Beautifulsoup包來提高效率,而這兩項我還不是特別熟,所以需要更多的訓練
—最后,給大家推薦一個資源很全的python學習免廢解答.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,這里有資深程式員分享以前學習心得,學習筆記,還有一線企業的作業經驗,且給大家精心整理一份python零基礎到專案實戰的資料,每天給大家講解python最新的技術,前景,學習需要留言的小細節
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/165930.html
標籤:Python
下一篇:python 有基礎入門程式
