scrapy图片下载

2018-11-01  本文已影响0人  杜大个

1.图片下载

第一种:正常那个的发起请求,获取图片的二进制文件,保存
第二种:自定义图片管道,继承自ImagePipline
重写两个方法:
def get_media_request(self,item,spider,...):
获取图片地址,发起请求
def item_completed(self,results,spider,item,...):
在resylts结果中根据图片下载状态,获取图片本地存储的路径.
将获取的路径赋值给item,让后婧item返回给其他管道

数据持久化(切记激活管道)

1.可以自定义数据管道
    def __init__(self,xxx,xxx,xxx,):
        #可以实例化一些参数(比如创建数据库链接,打开文件等等..)
    @classmethod
    def from_crawler(cls,crawler):
        # crawler:包含了爬虫的一些核心组件
        # 可以获取settings中的一些参数
        return cls(xxx,xxx,xxx)

    def open_spider(self,spider):
        #可选方法在爬虫开启的时候会调用
    
    def process_item(self,item,spider):
        #所有的item都会经过这个方法
        # 在这里做数据持久化(pymongo,pymysql)
        if isinstance(item,类名):
            # 做数据插入操作
        elif isinstance(item,类名):
            # 做数据插入操作
    # 方法二
        1.在item对应的类中,我们定义一个方法,
        返回sql语句和要插入的数据
        2.使用item调用这个方法,得到sql语句和要插入的数据
        3.执行插入操作
        

        return item(如果要将item传递给下一个管道,必须要return item))
    def close_spider(self,spider):
        #在爬虫结束的时候调用
        # 在这里关闭数据库链接,关闭文件

scrapy shell 交互式终端使用

scrapy shell 链接

scrapy.spider:

customer_settings:个爬虫文件可以根据这个参数做自定义的参数设置会覆盖settings.py文件中设置的全局参数

def start_requests():
    # 根据起始url发起请求

def parse(self,response):
    # 得到响应的回调函数

spiders文件夹下存放的是爬虫文件
items.py:根据目标网站,定义要提取的目标字段
pipeline.py:做数据的过滤和持久化
middlware.py:下载中间件和爬虫中间件
settings.py:在里面做User-Agent的配置,headers,激活管道文件

scrapy.cfg:配置文件,一般情况下做爬虫部署的使用会用到6

上一篇下一篇

猜你喜欢

热点阅读