Python 在Scrapy中的嵌套项中使用ImagesPipeline
当我尝试用scrapy下载图像时,我的数组是空的,这似乎有点奇怪。 我遵循了这些步骤,但ImagePipeline似乎无法处理嵌套项。但是,在我的输出Json文件中保存这种连接对我来说很重要 这是我的密码:Python 在Scrapy中的嵌套项中使用ImagesPipeline,python,scrapy,Python,Scrapy,当我尝试用scrapy下载图像时,我的数组是空的,这似乎有点奇怪。 我遵循了这些步骤,但ImagePipeline似乎无法处理嵌套项。但是,在我的输出Json文件中保存这种连接对我来说很重要 这是我的密码: import json import scrapy from scrapy.loader import ItemLoader from ccv_spiders.items import AuctionItem class GlenMarchSpider(scrapy.Spider
import json
import scrapy
from scrapy.loader import ItemLoader
from ccv_spiders.items import AuctionItem
class GlenMarchSpider(scrapy.Spider):
name = 'auctions_results'
def __init__(self, *args, **kwargs):
with open('/home/bolgi/Workspace/Dev/python_workspace/ccv_spiders/ccv_spiders/json/input/db_urls_glenmarch_results_scrapy_reduced.json', encoding='utf-8') as data_file:
self.data = json.load(data_file)
def start_requests(self):
for item in self.data:
request = scrapy.Request(item['gm_url'], callback=self.parse)
request.meta['item'] = item
yield request
def parse(self, response):
item = response.meta['item']
item['results'] = []
for caritem in response.css("div.car-item-border"):
data = AuctionItem()
data["auction_house"] = caritem.css("div.auctionHouse::text").get().split("-", 1)[0].strip()
data["auction_country"] = caritem.css("div.auctionHouse::text").get().rsplit(",", 1)[1].strip()
data["auction_date"] = caritem.css("div.date::text").get().replace(",", "").strip()
data["auction_url"] = caritem.css("div.view-auction a::attr(href)").get()
data["img_urls"] = caritem.css("img.img-responsive::attr(src)").get()
item['results'].append(data)
yield item
项目文件:
import scrapy
from scrapy.loader.processors import MapCompose
class AuctionItem(scrapy.Item):
auction_house= scrapy.Field()
auction_country= scrapy.Field()
auction_date= scrapy.Field()
auction_url= scrapy.Field()
image_urls= scrapy.Field()
pass
和设置文件:
ITEM_PIPELINES = {
'scrapy.pipelines.images.ImagesPipeline': 1,
}
IMAGES_STORE = 'images'
DOWNLOAD_TIMEOUT = 1200
我不知道如何用Scrapy下载嵌套项目中的图像…您是否设置了
图像\u URL\u FIELD=“img\u URL”
?是的,它不起作用。之后,我更改了“image_url”的项目名称,以尊重文档。它不起作用。@QBolgiimg\u url
字段必须位于生成的项上,因为管道只处理该项。它不处理主项中的嵌套项。因此,要么将其放入项中
dict,要么生成数据
。这将很复杂,因为我必须使用嵌套在“结果”项中的url。@QBolgi如果您需要特定的结构,那么您也可以尝试在子项中查找图像url的位置。是否设置了图像\u url\u字段=“img\u url”
?是的,它不起作用。之后,我更改了“image\u url”的项目名称“尊重文件。它不起作用。@QBolgiimg\u url
字段必须位于生成的项上,因为管道只处理该项。它不处理主项中的嵌套项。因此,要么将其放入项
目录中,要么生成数据
。这将很复杂,因为我必须使用嵌套在“结果”项中的url。@QBolgi如果您需要特定的结构,那么您也可以尝试在子项中查找图像url的位置。