Maison  >  Questions et réponses  >  le corps du texte

Web crawler - Comment explorer les images du blog Blog Park en utilisant Python ?

J'ai écrit un petit morceau de code pour explorer les images du blog Blog Park. Ce code est efficace pour certains liens, mais certains liens signalent des erreurs dès qu'ils sont explorés. Quelle en est la raison ?

#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

Comme le montre l'image, l'image peut être explorée correctement

Si vous changez l'URL en

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

Ensuite, une erreur sera signalée immédiatement

Veuillez le résoudre, merci !

某草草某草草2711 Il y a quelques jours861

répondre à tous(1)je répondrai

  • 我想大声告诉你

    我想大声告诉你2017-05-18 10:47:39

    Le message d'erreur est déjà très évident. Si vous regardez le code source de la page Web, la première image correspondante est au format GIF, et il s'agit toujours d'un chemin relatif, vous ne pouvez donc pas la télécharger, donc cela provoque IOerror, même si vous l'avez téléchargé, parce que vous avez spécifié le format JPG, vous ne pouvez pas l'ouvrir. Il ne vous reste plus qu'à juger et filtrer

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

    Regardez ce que j'ai ajouté. Bien sûr, ce n'est que le jugement le plus simple, mais cela peut garantir que votre deuxième programme ne signalera pas d'erreur, et cela vous donne aussi une idée !

    répondre
    0
  • Annulerrépondre