亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

網(wǎng)頁爬蟲 - 部落格園部落格中的圖片怎麼用python爬取下來?
某草草
某草草 2017-05-18 10:45:39
0
1
1113

寫了一小段程式碼,爬取部落格園部落格中的圖片,這段程式碼對(duì)部分連結(jié)有效,還有一部分連結(jié)一爬就報(bào)錯(cuò),這是什麼原因呢?

#coding=utf-8

import urllib
import re
from 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="(.*?)" alt'
imgre = re.compile(reg)
imglist = re.findall(imgre, html)
x = 0
for imgurl in imglist:
    urllib.urlretrieve(imgurl, '%s.jpg' % x)
    x += 1

如圖,可以正確爬取圖片

#若把url換上

url = "http://www.cnblogs.com/baronzhang/p/6861258.html"

則立刻報(bào)錯(cuò)

#求解決,謝謝!

某草草
某草草

全部回覆(1)
我想大聲告訴你

錯(cuò)誤提示已經(jīng)很明顯了,你去看下網(wǎng)頁源代碼,匹配到的第一張圖片是一個(gè)GIF格式的,並且還是相對(duì)路徑,所以你是下載不到的,故提示IOerror,就算你下載到了,因?yàn)槟阒付烁袷綖镴PG,你也打不開。 因此你需要做的就是判斷和篩選

for imgurl in imglist:
    if "gif" not in imgurl:
        urllib.urlretrieve(imgurl, '%s.jpg' % x)
        x += 1

看下我增加的地方,當(dāng)然這只是最簡單的判斷,但可以保證你第二個(gè)程序不會(huì)報(bào)錯(cuò),也是給你一個(gè)思路!

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板