'列表'对象没有属性' strip'使用urllib.urlretrieve时出错

时间:2015-05-19 11:48:43

标签: python regex image

您好我试图使用python 2.7从Flickr.com下载图片,这是我的代码

from PIL import Image, ImageTk
from urllib import urlopen
from re import findall
from Tkinter import *
import urllib, cStringIO
import random
photo_window=Tk()
photo_window.title('Photo Browser')
import base64
url = '"https://www.flickr.com/photos/flickr/galleries/72157644537473411/"'
regex = '<img src="([^"]+)".*>'
photofile=urllib.urlopen(url)
raw_data=photofile.read()
pattern = re.compile(regex)
download=re.findall(pattern,raw_data)
urllib.urlretrieve(download, "local-filename.gif")

我尝试使用findall尽可能多地下载图片 但它总是会出现错误:

'list' object has no attribute 'strip'

我可以帮助解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

正如@nhahtdh在评论中提到的,您报告的错误消息是因为您的变量“download”是一个列表(findall()的结果)而不是字符串。

urlretrieve需要一个字符串。

答案 1 :(得分:0)

这是工作代码

# imports
import re # mind this! It won't work with from re import findall 
photo_window=Tk()
photo_window.title('Photo Browser')
import base64
url = "https://www.flickr.com/photos/flickr/galleries/72157644537473411/"
regex = '<img src="([^"]+)".*>'
photofile=urllib.urlopen(url)
raw_data=photofile.read()
pattern = re.compile(regex)
 download=re.findall(pattern,raw_data)
t=0
for x in download:
    urllib.urlretrieve(x, "local-filename-%d.gif" %t )
    t+=1

您需要使用''.join(download)创建一个字符串,因为urlretrieve的第一个参数必须是字符串。 url='"smth"'也不正确,您最好url="smth"。此外,from re import findall因您在代码中使用re.findall(smh)而无法正常工作,因此您需要import re

图像将保存到名为 local-filename-0.gif local-filename-1.gif local-filename-2的文件中。 gif