1.圖片下載
第一種:正常那個的發(fā)起請求,獲取圖片的二進制文件,保存
第二種:自定義圖片管道,繼承自ImagePipline
重寫兩個方法:
def get_media_request(self,item,spider,...):
獲取圖片地址,發(fā)起請求
def item_completed(self,results,spider,item,...):
在resylts結(jié)果中根據(jù)圖片下載狀態(tài),獲取圖片本地存儲的路徑.
將獲取的路徑賦值給item,讓后婧item返回給其他管道
數(shù)據(jù)持久化(切記激活管道)
1.可以自定義數(shù)據(jù)管道
def __init__(self,xxx,xxx,xxx,):
#可以實例化一些參數(shù)(比如創(chuàng)建數(shù)據(jù)庫鏈接,打開文件等等..)
@classmethod
def from_crawler(cls,crawler):
# crawler:包含了爬蟲的一些核心組件
# 可以獲取settings中的一些參數(shù)
return cls(xxx,xxx,xxx)
def open_spider(self,spider):
#可選方法在爬蟲開啟的時候會調(diào)用
def process_item(self,item,spider):
#所有的item都會經(jīng)過這個方法
# 在這里做數(shù)據(jù)持久化(pymongo,pymysql)
if isinstance(item,類名):
# 做數(shù)據(jù)插入操作
elif isinstance(item,類名):
# 做數(shù)據(jù)插入操作
# 方法二
1.在item對應(yīng)的類中,我們定義一個方法,
返回sql語句和要插入的數(shù)據(jù)
2.使用item調(diào)用這個方法,得到sql語句和要插入的數(shù)據(jù)
3.執(zhí)行插入操作
return item(如果要將item傳遞給下一個管道,必須要return item))
def close_spider(self,spider):
#在爬蟲結(jié)束的時候調(diào)用
# 在這里關(guān)閉數(shù)據(jù)庫鏈接,關(guān)閉文件
scrapy shell 交互式終端使用
scrapy shell 鏈接
scrapy.spider:
customer_settings:個爬蟲文件可以根據(jù)這個參數(shù)做自定義的參數(shù)設(shè)置會覆蓋settings.py文件中設(shè)置的全局參數(shù)
def start_requests():
# 根據(jù)起始url發(fā)起請求
def parse(self,response):
# 得到響應(yīng)的回調(diào)函數(shù)
spiders文件夾下存放的是爬蟲文件
items.py:根據(jù)目標網(wǎng)站,定義要提取的目標字段
pipeline.py:做數(shù)據(jù)的過濾和持久化
middlware.py:下載中間件和爬蟲中間件
settings.py:在里面做User-Agent的配置,headers,激活管道文件
scrapy.cfg:配置文件,一般情況下做爬蟲部署的使用會用到6