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
我想下载一个图像和网址,看起来像这样"/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
(。
如果需要进行其他更改,可以创建自定义子类。
这足以下载您想要的文件,以及保存一些额外的元数据。