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