web - 抓取具有相应名称的图像,如 URL 中所示
问题描述
基本上我已经抓取了数千张图片并设法将它们放入按名称分类的文件夹中。在这些文件夹中,图像标有许多随机数。我想知道是否有办法从 URL 中提取标签来命名图像。
例如。
https://s3.amazonaws.com/cdn-origin-etr.akc.org/wp-content/uploads/2017/11/13002044/Affenpinscher-On-White-04.jpg
此链接对应的图片已标注 02563d3fe1d2933fe6dec09dc00b69bbabbf1560.jpg
我希望它与链接匹配:Affenpinscher-On-White-04.jpg
有人知道我该怎么做吗?
我为此使用了scrapy。
解决方案
如果您只是查看scrapy文档,这已经可用
https://docs.scrapy.org/en/latest/topics/media-pipeline.html#module-scrapy.pipelines.files
扩展媒体管道
在此处查看您可以在自定义文件管道中覆盖的方法:
classescrapy.pipelines.files.FilesPipeline[source] file_path(self, request, response=None, info=None, *, item=None)[source] 每个下载的项目调用一次此方法。它返回源自指定响应的文件的下载路径。
除了response之外,这个方法还接收原始的request、info和item
您可以覆盖此方法以自定义每个文件的下载路径。
例如,如果文件 URL 以常规路径结尾(例如https://example.com/a/b/c/foo.png),您可以使用以下方法将所有文件以其原始文件名下载到文件夹中(例如文件/foo.png):
import os
from urllib.parse import urlparse
from scrapy.pipelines.files import FilesPipeline
class MyFilesPipeline(FilesPipeline):
def file_path(self, request, response=None, info=None, *, item=None):
return 'files/' + os.path.basename(urlparse(request.url).path)
类似地,您可以使用 item 根据某些 item 属性来确定文件路径。
默认情况下,file_path() 方法返回 full/..
2.4 版新功能:item 参数。
推荐阅读
- azure-devops - Visual Studio 测试步骤成功完成后未报告代码覆盖率结果
- python - 分数函数返回未减少的分数
- postgresql - 获取旧版本 JDBC jar 的文档
- batch-file - ftp.exe 找不到作为环境变量值的文件夹
- swift - Swift:使用闭包添加 2 个数字的程序
- javascript - 过滤数组 (JS)
- matlab - MATLAB - 将不同的数组/矩阵连接到更大的矩阵
- django - 添加带有 label_tag 的 Font Awesome 图标
- docker - 如何并行化 docker run?
- sql-server - 具有两个外键列的 Sql 条件