我可以通过scrapy将图像下载到“
Full”文件夹中,但是full/session_id
每次scrapy运行时,我都需要使目标文件夹的名称动态化,例如。
有什么办法吗?
我还没有使用过ImagesPipeline
,但是按照文档操作,我会重写item_completed(results, items, info)
。
原始定义是:
def item_completed(self, results, item, info):
if self.IMAGES_RESULT_FIELD in item.fields:
item[self.IMAGES_RESULT_FIELD] = [x for ok, x in results if ok]
return item
这应该为您提供下载图像的结果集,包括路径(似乎一个项目上可能有很多图像)。
如果现在在子类中更改此方法以在设置路径之前移动所有文件,则它应该可以根据需要工作。您可以将目标文件夹设置为项目item['session_path']
。您必须在每个项目上设置此设置,然后才能从蜘蛛退回/生产您的项目。
带有重写方法的子类如下所示:
import os, os.path
from scrapy.contrib.pipeline.images import ImagesPipeline
class SessionImagesPipeline(ImagesPipeline):
def item_completed(self, results, item, info):
# iterate over the local file paths of all downloaded images
for result in [x for ok, x in results if ok]:
path = result['path']
# here we create the session-path where the files should be in the end
# you'll have to change this path creation depending on your needs
target_path = os.path.join((item['session_path'], os.basename(path)))
# try to move the file and raise exception if not possible
if not os.rename(path, target_path):
raise ImageException("Could not move image to target folder")
# here we'll write out the result with the new path,
# if there is a result field on the item (just like the original code does)
if self.IMAGES_RESULT_FIELD in item.fields:
result['path'] = target_path
item[self.IMAGES_RESULT_FIELD].append(result)
return item
更好的办法是,item
在您匆忙运行期间在配置中而不是在中设置所需的会话路径。为此,我认为您必须找出在应用程序运行时如何设置配置的方法,并且必须重写构造函数。
可能重复: 如何使用请求下载图像 我有这个Python脚本用于抓取tumblr博客的图像URL,并希望将它们下载到我桌面上的本地文件夹中。我将如何着手实施这一点
如何在android项目中将图像动态添加到资源/可绘制文件夹? 我会在android手机上浏览内置的gallery应用程序,并将gallery中的图像添加到Resources/drawable文件夹中。可以这样做吗? 意图=新的意图(意图。ACTION_GET_CONTENT);intent.set类型(“图像/*”);开始活动结果(意图,IMAGE_PICK); 我已经使用了上面的代码从画廊挑选
我的应用程序中有一个文件上传模块。我可以在这里上传img/upload/{container\u id}/file\u name\中的文件。 {container_id}将取决于用户将使用的文件夹。 我遇到的问题是当他们试图将一条记录编辑到另一个文件夹时。他们上载的文件仍保留在旧文件夹中。 我还想将文件移动到用户定义的新文件夹中。 我这里有我的代码,我被困在移动文件中了。
问题内容: 我试图从文件选择器中选择图像文件后立即显示它。文件选择器仅限于.png和.jpg文件,所选文件存储在File类型的变量中。为此,我已经设置了ImageView,并且我希望使用此新文件设置图像,唯一的问题是文件类型不是图像。 如何做到这一点?到目前为止的代码… 问题答案: 您可以简单地用 然后将其放在: 其他构造函数提供了对加载图像所需资源的更多控制。如果要强制将图像设置为特定大小,则可
我使用以下代码移动图像一个文件夹到另一个文件夹,但它不工作。 如下 但还是不行谢谢
使用Glide将URL下载到非常容易: 我想知道我是否也可以下载到中?我想下载到原始位图中,然后我可以使用其他工具进行操作。我已经浏览了代码,但不知道如何操作。