自己處理下載時不需要設置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拼接出來的路徑正確,如果沒有意外,到這里運行爬蟲之后已經可以正常爬取圖片到設定的文件夾了。