Как извлечь изображения из HTML-файлов в каталоге? - PullRequest
0 голосов
/ 08 марта 2012

Это продолжение этого вопроса: Как мне разобрать каждый html-файл в каталоге изображений? По сути, у меня есть каталог файлов HTML, каждый из которых содержит изображения, которые я хотел бы сохранить отдельно в том же каталоге.

После внесения предложенных изменений в программу по-прежнему появляется ошибка:

Image: theme/pfeil_grau.gif

Traceback (most recent call last):
File "C:\Users\gokalraina\Desktop\modfile.py", line 25, in <module>
  im = Image.open(image)
File "C:\Python27\lib\site-packages\PIL\Image.py", line 1956, in open
prefix = fp.read(16)
TypeError: 'NoneType' object is not callable

Это пересмотренный код (спасибо nightcracker), который я использую.

 import os, os.path
 import Image
 from BeautifulSoup import BeautifulSoup as bs

  path = 'C:\Users\gokalraina\Desktop\derm images'

 for root, dirs, files in os.walk(path):
    for f in files:
      soup = bs(open(os.path.join(root, f)).read())
      for image in soup.findAll("img"):
        print "Image: %(src)s" % image
        im = Image.open(image)
        im.save(path+image["src"], "JPEG")

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Код передает объект BeautifulSoup.Tag в Image.open, но Image.open ожидает путь или файловый объект.Вы можете получить относительный путь к изображению с помощью image["src"], поэтому код будет:

im = Image.open(image["src"])

Однако этот путь является тем же путем, записанным в файле HTML, который, вероятно, является относительным путем, начинающимся сиз каталога файла HTML.Если это так, присоединение root к image["src"] даст абсолютный путь для каждого изображения:

im = Image.open(os.path.join(root, image["src"]))
0 голосов
/ 08 марта 2012

Image.open() может не обрабатывать удаленные файлы. Вам лучше скачать изображения, используя urllib или urllib2 модуль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...