網頁爬蟲 - 博客園博客中的圖片怎么用python爬取下來?
問題描述
寫了一小段代碼,爬取博客園博客中的圖片,這段代碼對部分鏈接有效,還有一部分鏈接一爬就報錯,這是什么原因呢?
#coding=utf-8import urllibimport refrom lxml import etree#解析地址def getHtml(url): page = urllib.urlopen(url) html = page.read() return html#獲取地址并建樹url = 'http://www.cnblogs.com/fnng/archive/2013/05/20/3089816.html'html = getHtml(url)html = html.decode('utf-8')tree = etree.HTML(html)#保存圖片至本地reg = r’src='http://www.piao2010.com/wenda/(.*?)' alt’imgre = re.compile(reg)imglist = re.findall(imgre, html)x = 0for imgurl in imglist: urllib.urlretrieve(imgurl, ’%s.jpg’ % x) x += 1
如圖,可以正確爬取圖片
若把url換為
url = 'http://www.cnblogs.com/baronzhang/p/6861258.html'
則立馬報錯

求解決,謝謝!
問題解答
回答1:錯誤提示已經很明顯了,你去看下網頁源代碼,匹配到的第一張圖片是一個GIF格式的,并且還是相對路徑,所以你是下載不到的,故提示IOerror,就算你下載到了,因為你指定了格式為JPG,你也打不開。 因此你需要做的就是判斷和篩選
for imgurl in imglist: if 'gif' not in imgurl:urllib.urlretrieve(imgurl, ’%s.jpg’ % x)x += 1
看下我增加的地方,當然這只是最簡單的判斷,但可以保證你第二個程序不會報錯,也是給你一個思路!
相關文章:
1. 運行python程序時出現“應用程序發生異常”的內存錯誤?2. macos - 無法source activate python273. java - butterknife怎么綁定多個view4. java - 同步/異步與阻塞/非阻塞之間的差異具體是什么?5. javascript - 打算寫一個c++的node圖像處理模塊,有沒有推薦的c++圖片處理庫?6. css3 讓圖片變成灰色(filter),但針對IE11瀏覽器無效7. android - Genymotion 模擬器可以做屏幕適配檢測嗎?8. html5 - 前端面試碰到了一個緩存數據的問題,來論壇上請教一下9. html - 非微信官方網頁,將由微信轉換為手機預覽模式10. 我在導入模板資源時遇到無法顯示的問題,請老師解答下

網公網安備