黃哥教Python初學者如何調試錯誤。
import urllib.requestnimport renndef getHtml(url):n page = urllib.request.urlopen(url)n html = page.read()n return htmlnndef getImg(html):n reg = rsrc="(.+?.jpg)" pic_extnn html=html.decode(utf-8)n imgre = re.compile(reg)nn imglist = re.findall(imgre,html)n x = 0n for imgurl in imglist:n urllib.request.urlretrieve(imgurl,%s.jpg % x)n x+=1nhtml = getHtml("http://www.vip.com/?f=hao123mz")nnprint(getImg(html))n
他的錯誤是只輸出一個None,
1、先說明為啥是None
你的getHtml 函數不是用return 返回值,但這樣的函數有一個默認返回值為None你print 後,所以輸出值為None
2、正則沒有匹配到任何東西。在imglist = re.findall(imgre,html) 著句後面加一個print(imglist) 用來調試。
輸出結果為[], 說明正則沒有匹配到數據。那隻要修改正則即可。
請看黃哥下面修改的代碼。
# coding:utf-8nnimport urllib.requestnimport rennndef get_html(url):n page = urllib.request.urlopen(url)n html = page.read()n return htmlnnndef get_img(html):n reg = rdata-original="(.*?).jpg"n html = html.decode(utf-8)n imgre = re.compile(reg)nn imglist = re.findall(imgre, html)n if imglist:n imglist = [item + ".jpg" for item in imglist]nn for i, imgurl in enumerate(imglist):n urllib.request.urlretrieve(imgurl, %s.jpg % i)nnif __name__ == __main__:n html = get_html("http://www.vip.com/?f=hao123mz")n get_img(html)n
推薦閱讀:
※計算機視覺 | Python OpenCV 3 使用背景減除進行目標檢測
※python爬蟲之豆瓣音樂top250
※Requests 庫學習筆記
※巧用抓包 ― 爬遍SCU玻璃杯事件所有神回復
※黑客你好,請使用Python編寫一個滲透測試探測器
TAG:Python |