gpt4 book ai didi

python-3.x - Python3 urllib图像检索

转载 作者:行者123 更新时间:2023-12-02 14:50:05 25 4
gpt4 key购买 nike

我正在编写一个小Python脚本来通过谷歌图像抓取图像。我已经成功地将我想要的图像的网址放在一个方便的列表中。现在,我只需要捕获它们......

对于每个图像网址,我这样做:

    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()

以下是我遇到的问题:

即使我可以直接在浏览器中打开 URL,但尝试打开一些 URL 却会出现 403 错误。那么图像服务器不喜欢 HTTP 请求 header 中的某些内容...有什么想法吗?

以下是一些输出:

Retrieving:http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Timba%2B1.jpg/220px-Timba%2B1.jpg

error: cannot retrieve image

Retrieving:http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/260px-YellowLabradorLooking_new.jpg

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

read 11123 bytes

Retrieving:http://completedogfood.net/wp-content/uploads/2010/07/complete-dog-food.bmp
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}))

关于python-3.x - Python3 urllib图像检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10945542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com