Я делаю небольшой скрипт с помощью PyQt4 и BeautifulSoup. В основном вы указываете url и сценарий, который должен загружать все pic с веб-страницы.Что это за ошибка в красивом супе?
В выходе, когда я обеспечиваю http://yahoo.com он загружает все изображения, кроме одного:
...
Download Complete
Download Complete
File name is wrong
Traceback (most recent call last):
File "./picture_downloader.py", line 41, in loadComplete
self.download_image()
File "./picture_downloader.py", line 58, in download_image
print 'File name is wrong ',image['src']
File "/usr/local/lib/python2.7/dist-packages/beautifulsoup4-4.1.3-py2.7.egg/bs4/element.py", line 879, in __getitem__
return self.attrs[key]
KeyError: 'src'
выход из http://stackoverflow.com является:
Download Complete
File name is wrong h
Download Complete
И, наконец, вот часть кода:
# SLOT for loadFinished
def loadComplete(self):
self.download_image()
def download_image(self):
html = unicode(self.frame.toHtml()).encode('utf-8')
soup = bs(html)
for image in soup.findAll('img'):
try:
file_name = image['src'].split('/')[-1]
cur_path = os.path.abspath(os.curdir)
if not os.path.exists(os.path.join(cur_path, 'images/')):
os.makedirs(os.path.join(cur_path, 'images/'))
f_path = os.path.join(cur_path, 'images/%s' % file_name)
urlretrieve(image['src'], f_path)
print "Download Complete"
except:
print 'File name is wrong ',image['src']
print "No more pictures on the page"
Ошибка возникает из 'file_name = image ['src']. Split ('/') [- 1]' – That1Guy
@ That1Guy - вы правы, исправлено за 3 секунды до вашего комментария: P – root
@Vor - Чтобы избежать этой проблемы, попробуйте: 'soup.findAll ('img', {" src ": True})' – root