Python3 urllib image retreval

我正在写一个小脚本 Python 通过捕获图像 google images. 我设法将案例带到了我在方便的列表中拥有所需的图像的URL。 现在我只需要抓住它们......

对于每个镜头 url 我正在做的:


print/"Retrieving:{0}".format/sFinalImageURL//
sExt = sFinalImageURL.split/'.'/[-1]
#u = urllib.request.urlopen/sFinalImageURL/
try:
u = urllib.request.urlopen/sFinalImageURL/
except:
print/"error: cannot retrieve image"/
continue
raw_data = u.read//
print/"read {0} bytes".format/len/raw_data///
u.close//
global sImagesFolder
try:
f = open/"{0}/{1}_{2}.{3}".format/sImagesFolder,sImage,i,sExt/,'wb'/
f.write/raw_data/
f.close//
except:
print/"couldn't write to {0}/{1}_{2}.{3}".format/sImagesFolder,sImage,i,sExt//
print//


这里有什么问题遇到:

试图打开一些 URLs 给我 403, 虽然我可以打开 URLs 就在您的浏览器中。 所以,在请求标题中 HTTP 有些东西我不喜欢图像服务器...有想法?

以下是一些结果:


Retrieving:[url=http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Timba%2B1.jpg/220px-Timba%2B1.jpg]http://upload.wikimedia.org/wi ... 1.jpg[/url]

error: cannot retrieve image

Retrieving:[url=http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/260px-YellowLabradorLooking_new.jpg]http://upload.wikimedia.org/wi ... w.jpg[/url]

error: cannot retrieve image
Retrieving:[url=http://1.bp.blogspot.com/-7SsJ1n3RdoA/Tf07NOgD5nI/AAAAAAAAABo/tl8qLLIU01Y/s1600/english-shepherd-dog-0003.jpg]http://1.bp.blogspot.com/-7SsJ ... 3.jpg[/url]

read 11123 bytes

Retrieving:[url=http://completedogfood.net/wp-content/uploads/2010/07/complete-dog-food.bmp]http://completedogfood.net/wp- ... d.bmp[/url]
read 419630 bytes
已邀请:

冰洋

赞同来自:

似乎维基百科允许仅访问真实浏览器。

通过指定字符串可以解决问题
User-Agent

真正的浏览器,因为 Python
urllib

默认情况下,它发送类似的东西
Python-urllib/3.2

.

这是一个有效的例子 /用字符串
User-Agent

浏览器我使用/:


url = 'http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Timba%2B1.jpg/220px-Timba%2B1.jpg'
user_agent = 'Mozilla/5.0 /X11; Linux x86_64/ AppleWebKit/535.19 /KHTML, like Gecko/ Ubuntu/12.04 Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/535.19'
u = urllib.request.urlopen/urllib.request.Request/url, headers={'User-Agent': user_agent}//

要回复问题请先登录注册