python-3.x - 如何从scrapy python下载图像并将它们保存到文件夹及其变量中的路径
问题描述
import scrapy
import json
class Brand(scrapy.Item):
name = scrapy.Field()
url = scrapy.Field()
brand_image = scrapy.Field()
productsList = scrapy.Field()
class QuotesSpider(scrapy.Spider):
name = "brandDetails"
def start_requests(self):
with open('brands.json') as data_file:
data_item = json.load(data_file)
urls = list()
for item in data_item:
urls.append(item["url"])
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
item = Brand()
name = response.css("div.th::text").extract_first()
name = name.replace('Products of ', '')
item['name'] = name
item['url'] = response.url
我想下载一个图像和 url 看起来像这样"/get.aspx?id=1988147"
,并将下载的图像保存到一个文件中,保存路径在项目中,如item['image']
.
image = response.css("div.productimage img::attr(src)").extract_first()
# example of src of image = > /get.aspx?id=1988147
yield item
解决方案
Scrapy 具有用于下载文件、媒体管道的内置机制。
在最简单的情况下,您将设置项目的字段(file_urls
或image_urls
),激活您的管道,并设置要下载到settings.py
的路径(FILES_STORE
或)。
如果需要进行其他更改,可以创建自定义子类。IMAGES_STORE
这足以下载您想要的文件,以及保存一些额外的元数据。
推荐阅读
- python - pyspark - 使用 RDD 进行聚合比 DataFrame 快得多
- hive - 蜂巢直线命令历史文件的路径是什么?
- python - 无法使用 Beautiful Soup 抓取网站
- c# - 使用 128 位块和 256 位密钥实现 AES-GCM
- php - PHP zipArchive::setPassword 无法正常工作
- c++ - 将自定义可绘制对象存储在数组中会导致绘制它们时出现分段错误
- firebase - 离子运行时错误 - 区域已加载
- amazon-web-services - 列出今天创建的自动 RDS 快照并使用 boto3 复制到其他区域
- html - 动画切换固定顶部导航栏
- r - 将 ggplot/manipulate 图转换为 plotly 或 js 脚本图