私はスクレイピーの初心者です。ここから画像をダウンロードしようとしています。私は公式文書とこの記事に従っていました。
私のsettings.pyは次のようになります:
BOT_NAME = 'shopclues'
SPIDER_MODULES = ['shopclues.spiders']
NEWSPIDER_MODULE = 'shopclues.spiders'
ROBOTSTXT_OBEY = True
ITEM_PIPELINES = {
'scrapy.contrib.pipeline.images.ImagesPipeline':1
}
IMAGES_STORE="home/pr.singh/Projects"
次のようになりitems.py
ます。
import scrapy
from scrapy.item import Item
class ShopcluesItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
pass
class ImgData(Item):
image_urls=scrapy.Field()
images=scrapy.Field()
これらのファイルは両方とも良いと思います。しかし、画像を取得するための正しいスパイダーを書くことができません。画像の URL を取得できますが、を使用して画像を保存する方法がわかりませんimagePipeline
。
私のクモは次のようになります。
from shopclues.items import ImgData
import scrapy
import datetime
class DownloadFirstImg(scrapy.Spider):
name="DownloadfirstImg"
start_urls=[
'http://www.shopclues.com/canon-powershot-sx410-is-2.html',
]
def parse (self, response):
url= response.css("body div.site-container div#container div.ml_containermain div.content-helper div.aside-site-content div.product form#product_form_83013851 div.product-gallery div#product_images_83013851_update div.slide a#det_img_link_83013851_25781870")
yield scrapy.Request(url.xpath('@href').extract(),self.parse_page)
def parse_page(self,response):
imgURl=response.css("body div.site-container div#container div.ml_containermain div.content-helper div.aside-site-content div.product form#product_form_83013851 div.product-gallery div#product_images_83013851_update div.slide a#det_img_link_83013851_25781870::attr(href)").extract()
yield {
ImgData(image_urls=[imgURl])
}
この記事に続いてスパイダーを書きました。しかし、私は何も得ていません。私は自分のスパイダーを実行していますscrapy crawl DownloadfirstImg -o img5.json
が、jsonも画像も取得していませんか?
URLがわかっている場合に画像を取得する方法に関するヘルプ。私もPythonを使ったことがないので、物事は私にとって非常に複雑に思えます。優れたチュートリアルへのリンクが役立つ場合があります。ティア