Scrapy を使用してスクレイパーを構築していますが、次のエラー メッセージが表示され、その理由がわかりません。スクレイピーのドキュメントを見てきましたが、何か不足しているかどうかはわかりません。説明付きのサイトから画像をダウンロードしようとしています。説明は CSV にダウンロードし、画像は IMG という名前のフォルダーにダウンロードしたいと考えています。
クモ
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from NSIscrape.items import NsiscrapeItem
from scrapy.http import Request
from scrapy.contrib.pipeline.images import ImagesPipeline
class NsiscrapeSpider(BaseSpider):
name = "Nsiscrape"
allowed_domain = ["yachtauctions.com"]
start_urls = [
"http://www.yachtauctions.com/inventory/"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//tr')
items = []
for site in sites:
item = NsiscrapeItem()
item['location'] = site.select('td[2]/text()').extract()
item['stock_number'] = site.select('td[3]/a/text()').extract()
item['year'] = site.select('td[4]/text()').extract()
item['manufacturer'] = site.select('td[5]/text()').extract()
item['model'] = site.select('td[6]/text()').extract()
item['length'] = site.select('td[7]/text()').extract()
item['price'] = site.select('td[8]/text()').extract()
item['status'] = site.select('td[10]/img/@src').extract()
item['url'] = site.select('td[1]/a/@href').extract()
item['images'] = site.select('td/a[3]/img/@data-original').extract()
item['image_urls'] = item['images']
yield Request(item['url'][0],
meta={'item':item},
callback=self.product_detail_page)
def product_detail_page(self, response):
hxs = HtmlXPathSelector(response)
item = response.request.meta['item']
#add all images url in the item['image_urls']
yield item
これは、スクレーパーの実行時に発生するエラーです
raise TypeError('Request url must be str or unicode, got %s:' % type
(url).__name__)
exceptions.TypeError: Request url must be str or unicode, got list: