Scrapy爬虫框架爬取图片示例

一、新建一个tupian爬虫项目

scrapy startproject tupian

二、进入到tupian项目,新建一个image爬虫文件

cd tupian
scrapy genspider image www.xxx.com

三、修改配置文件settings

ROBOTSTXT_OBEY = False
LOG_LEVEL = 'ERROR'
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"

四、指定要爬取的页面

start_urls = ["https://sc.XXXX/kejitupian.html"]

五、获取图片的地址

def parse(self, response):
    图片列表= response.xpath('/html/body/div[3]/div[2]/div')
    '/html/body/div[3]/div[2]/div[1]'
    '/html/body/div[3]/div[2]/div[1]/img'
    for i in 图片列表:
        图片地址 ='https:'+i.xpath('./img/@data-original').extract_first()
        print(图片地址)

六、构建items对象

链接地址 = scrapy.Field()

七、将item对象导入爬虫文件,并实例化该对象

from ..items import TupianItem
for i in 图片列表:
    图片地址 ='https:'+i.xpath('./img/@data-original').extract_first()
    item对象=TupianItem()
    item对象['链接地址']=图片地址
    yield item对象

八、新建管道类,并导入ImagesPipeline

from scrapy.pipelines.images import ImagesPipeline
class 图片管道类(ImagesPipeline):
    def get_media_requests(self, item, info):
        图片地址=item['链接地址']
        yield scrapy.Request(图片地址)
    def file_path(self, request, response=None, info=None, *, item=None):
        图片名称 =request.url.split('/')[-1]
        return 图片名称
    def item_completed(self, results, item, info):
        return item

九、开启管道,由于不是默认的管道类,所以需要修改一下

ITEM_PIPELINES = {
   "tupian.pipelines.图片管道类": 300,
}

十、指定图片保存的路径

IMAGES_STORE='图片夹'

十一、启动爬虫

scrapy crawl image

十二、运行结果

THE END