Rumah  >  Soal Jawab  >  teks badan

Perayap web - Bagaimana cara merangkak gambar dalam blog Blog Park menggunakan python?

Saya menulis sekeping kod kecil untuk merangkak gambar dalam blog Taman Blog Kod ini berkesan untuk beberapa pautan, tetapi beberapa pautan melaporkan ralat sebaik sahaja ia dirangkak.

#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

Seperti yang ditunjukkan dalam gambar, imej boleh dirangkak dengan betul

Jika anda menukar url kepada

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

Kemudian ralat akan dilaporkan serta-merta

Sila selesaikan, terima kasih!

某草草某草草2711 hari yang lalu859

membalas semua(1)saya akan balas

  • 我想大声告诉你

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

    Mesej ralat sudah sangat jelas Jika anda melihat pada kod sumber halaman web, imej pertama yang dipadankan adalah dalam format GIF, dan ia masih laluan relatif, jadi anda tidak boleh memuat turunnya, jadi ia menggesa IOerror, walaupun. jika anda telah memuat turunnya, kerana anda menetapkan format sebagai JPG, anda tidak boleh membukanya. Jadi anda hanya perlu menilai dan menapis

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

    Lihat apa yang saya tambah Sudah tentu, ini hanyalah penilaian yang paling mudah, tetapi ia boleh memastikan bahawa program kedua anda tidak akan melaporkan ralat, dan ia juga memberi anda idea!

    balas
    0
  • Batalbalas