Ich habe einen kleinen Code geschrieben, um die Bilder im Blog Park zu crawlen. Dieser Code ist für einige Links wirksam, aber einige Links melden Fehler, sobald sie gecrawlt werden.
#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
Wie im Bild gezeigt, kann das Bild korrekt gecrawlt werden
Wenn Sie die URL in
?ndernurl = "http://www.cnblogs.com/baronzhang/p/6861258.html"
Dann wird ein Fehler sofort gemeldet
Bitte l?sen Sie es, danke!
錯誤提示已經(jīng)很明顯了,你去看下網(wǎng)頁源代碼,匹配到的第一張圖片是一個GIF格式的,并且還是相對路徑,所以你是下載不到的,故提示IOerror,就算你下載到了,因為你指定了格式為JPG,你也打不開。 因此你需要做的就是判斷和篩選
for imgurl in imglist:
if "gif" not in imgurl:
urllib.urlretrieve(imgurl, '%s.jpg' % x)
x += 1
看下我增加的地方,當(dāng)然這只是最簡單的判斷,但可以保證你第二個程序不會報錯,也是給你一個思路!