gpt4 book ai didi

Python 图像抓取器在单独运行时有效,但在从其他地方调用时无效

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:52 27 4
gpt4 key购买 nike

python 2.7

Ubuntu 12.04

我正在尝试组装一个图像抓取工具,我以前没有遇到任何问题,但现在我卡在了某个点上。

我从任何地方(网页或用户)获取图像链接列表,让我们假设它们是有效链接。

我正在抓取的网站是 imgur,一些链接不起作用,因为我没有添加对它们的支持(单个文件),我有从相册页面向下获取每个图像链接的代码,有效并返回如下链接:

http://i.imgur.com/5329B8H.jpg #(intentionally broken link)

我在实际程序中使用的 image_download 函数:

def image_download(self, links):
for each in links:
url = each
name = each.split('/')[-1]
r = requests.get(url, stream=True)
with open(name, 'wb') as f:
for chunk in r.iter_content(1024):
if not chunk:
break

f.write(chunk)

我拥有的用于测试的 image_download 函数可以自行运行:

def down():
links = ['link-1', 'link-2']
for each in links:
name = each.split('/')[-1]
r = requests.get(each, stream=True)
with open(name, 'wb') as f:
for chunk in r.iter_content(1024):
if not chunk:
break
f.write(chunk)

问题来了,第二个有效。他们都接受相同的输入,他们都做同样的事情。第一个确实返回一个具有正确名称和扩展名的文件,但文件大小不同,例如 960b,而第二个返回一个大约 200kb 的文件。

当我打印请求时,两者都返回 200 的响应,我尝试在不同的点打印输出,据我所知,它们以完全相同的方式使用完全相同的数据运行,只是没有返回相同的信息。

这是怎么回事?

最佳答案

您需要再缩进一次f.write(chunk)。您现在只是将最后一个 block 写入文件。

修正后的函数如下所示:

def image_download(self, links):
for each in links:
url = each
name = each.split('/')[-1]
r = requests.get(url, stream=True)
with open(name, 'wb') as f:
for chunk in r.iter_content(1024):
if not chunk:
break

f.write(chunk) #This has been indented to be in the for loop.

关于Python 图像抓取器在单独运行时有效,但在从其他地方调用时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20071048/

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