使用scrapy爬取圖片,自己處理下載和使用scrapy處理下載


  自己處理下載時不需要設置item.py,pipelines.py等這些文件,這些文件保持默認便可,只需要自己用css也好,xpath也好,獲取到圖片鏈接之后,使用常規的圖片下載方法,下載圖片即可,像下面這樣:

        try:
            os.makedirs(root_path)
        except FileExistsError:
            pass
        r = requests.get(img_url, headers=headers)
        with open(root_path + img_name, 'wb') as f:
            f.write(r.content)

  就不多講了,下面講使用scrapy處理圖片下載,下面的內容都是在你已經正確獲取到了圖片鏈接的前提下。

  

  首先,編寫item.py文件:

class ImagesItem(scrapy.Item):
    file_name = scrapy.Field()
    img_urls = scrapy.Field()

  上面的file_name為文件保存路徑,img_urls為圖片下載的鏈接。

  然后爬蟲主文件中實例化item:

        item = ImagesItem()
        item['file_name'] = root_path + img_name
        item['img_urls'] = img_url
        yield item

  接着就是處理下載的pipelines.py文件了:

class ImagePipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        for img_url in item['img_urls']:
            yield Request(img_url, meta={'name': item['file_name']})

    def file_path(self, request, response=None, info=None):
        filename = request.meta['name']
        return filename

  之后就是在setting.py中啟用ImagePipeline了:

IMAGES_STORE = 'D:\\'

ITEM_PIPELINES = {
   'images.pipelines.ImagePipeline': 300,
}

  注意這里的IMAGE_STORE是下載路徑,會和上面的filename進行拼接,請確認自己設置的IMAGE_STORE和filename拼接出來的路徑正確,如果沒有意外,到這里運行爬蟲之后已經可以正常爬取圖片到設定的文件夾了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM