您好我试图使用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'
我可以帮助解决这个问题吗?
答案 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 等