一.区分

根据yield迭代器生成的对象是request对象还是item对象

二.item

1.配置tem对象

items.py文件中设置类

class MyscrapyItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
title = scrapy.Field()
price = scrapy.Field()
prostatus = scrapy.Field()

2.在爬虫程序中导入该类写相应的函数

from myscrapy.items import MyscrapyItem
def get_info(self,response):
elements_list = response.css('.product')
for element in elements_list:
title = element.css('.productTitle a::attr(title)').extract_first() #这是css选择器
price = element.css('.productPrice em::attr(title)').extract_first()
prostatus = element.css('.productStatus em::text').extract_first()
item = MyscrapyItem() #实例话一个item对象
item['title'] = title #填写配置的参数
item['price'] = price
item['prostatus'] = prostatus
yield item

三.再获得item参数后scrapy会自动执行pipelines.py文件中内容

1.settings文件进行注册

ITEM_PIPELINES = {
'myscrapy.pipelines.MyscrapyPipeline': 300, #小的优先级高
# 'myscrapy.pipelines.MyscrapyPipeline1': 500,
}
#和中间件一个道理

2.配置MyscrapyPipeline方法

#其中两个方法非常常用
#def open_spider(self): 运行这个函数开始执行,一般都是连接数据库用
#def close_spider(self): 运行完这个函数执行,一般都是关闭数据库用 #简单拿MongoDB举例
from pymongo import MongoClient class MyscrapyPipeline(object): def __init__(self,HOST,PORT,USER,PWD,DB,TABLE):
self.HOST = HOST
self.PORT = PORT
self.USER = USER
self.PWD = PWD
self.DB = DB
self.TABLE = TABLE
#执行__init__之前执行
@classmethod
def from_crawler(cls,crawler):
HOST = crawler.settings.get('HOST') #crawler.settings可以直接获得setting文件中的所有名称
PORT = crawler.settings.get('PORT')
USER = crawler.settings.get('USER')
PWD = crawler.settings.get('PWD')
DB = crawler.settings.get('DB')
TABLE = crawler.settings.get('TABLE')
return cls(HOST,PORT,USER,PWD,DB,TABLE) def open_spider(self,spider):
self.client = MongoClient(host=self.HOST,port=self.PORT,username=self.USER,password=self.PWD)
print('连接数据库成功') def close_spider(self,spider):
self.client.close()
print('关闭数据库') def process_item(self, item, spider):
self.client[self.DB][self.TABLE].insert_one(dict(item))
return item

最新文章

  1. 没有素描色彩基础适合学习UI吗,如果可以,该怎么学?
  2. ENode框架Conference案例分析系列之 - 订单处理减库存的设计
  3. 基于MVC4+EasyUI的Web开发框架经验总结(10)--在Web界面上实现数据的导入和导出
  4. Qt回忆录之配置开发环境
  5. 样条曲线的Fortran程序
  6. 仿淘宝TAB切换搜索框
  7. 关于在eclipse开发环境上打开手机data文件
  8. Unity-NGUI UILabel换行
  9. python之常用模块(续)
  10. ML.NET 示例:深度学习之集成TensorFlow
  11. MRO C3算法 super的运用
  12. Jvm的体系结构
  13. Vue.js MVVM及数据绑定原理
  14. 黄金分割点(第五周 c语言版)
  15. ajax Post数据,并得到返回结果,密码加密(Select,checkbox)
  16. week1:个人博客作业
  17. 关于redux适用的情况
  18. 使用python操作文件实现购物车程序
  19. 面向对象 OOP
  20. 面试知识整理-Java基础

热门文章

  1. tomcat session共享
  2. mysql过期修改
  3. win10: 搭建FTP服务器
  4. [ASP.NET Core 3框架揭秘] 依赖注入[4]:一个Mini版的依赖注入框架
  5. Git很麻烦?只要掌握这几个命令,轻松将代码提交远程仓库
  6. 使用mysql-proxy实现mysql的读写分离
  7. 【zabbix服务】修改zabbix_server默认端口号
  8. 【AGC028D】Chord
  9. Centos 下安装 PHP (新)
  10. SpringCloud之Feign 负载均衡请求超时时间