基于python的scrapy框架中使用MongoDB遇到的问题
来源:互联网 发布:一直 正在准备 windows 编辑:程序博客网 时间:2024/06/02 07:20
使用MongoDB保存抓取结果,应如何设置settings.py与pipelines.py
1. settings.py
# settings.pyMONGODB_SERVER = 'localhost'MONGODB_PORT = 27017MONGODB_DB = 'freebuf_db'MONGODB_COLLECTION = 'wenzhang'
在settings.py文件的设置中,MONGODB_PORT变量起初的定义是在27017上加了单引号,运行后系统报错,称“MONGODB_PORT must be int”, 所以这里要注意该变量的值为整形,非字符串型。
2. pipelines.py
# pipelines.pyimport pymongofrom scrapy.conf import settings#from scrapy.exceptions import DropItem#from scrapy import logclass MongoPipeline(object): def __init__(self): self.server = settings['MONGODB_SERVER'] self.port = settings['MONGODB_PORT'] self.db = settings['MONGODB_DB'] self.col = settings['MONGODB_COLLECTION'] connection = pymongo.MongoClient(self.server, self.port) db = connection[self.db] self.collection = db[self.col] def process_item(self, item, spider): self.collection.insert(item) return item
在pipelines.py的设置中,原本使用了命令:
connection = pymongo.Connection(self.server, self.port)
系统在该处报错“找不到这个方法”,查询资料过后发现,在新版本中pymongo,已经取消了Connection函数,而使用函数MongoClient(),这里需注意。
3. item报错“缺少_id”定义
以上两个文件设置好,并排除错误后,运行整个爬虫,报错“item中没有定义_id”。这个错误的出现让我有点不知所措,在我的知识储备中,_id是将数据存入mongodb时,mongodb会给每条数据自定义一个唯一的"_id"。所以,我原本认为,“_id”这个属性是不需要自己声明的。但是系统在此处报错,所以我尝试性的在items.py文件中,加入了对“_id”的声明:
_id = scrapy.Field()
再次运行后,抓取成功。至今不明白为什么需要自己对该变量进行声明,如果哪位网友有思路,希望能够对改篇博客进行回复,十分感谢。
0 0
- 基于python的scrapy框架中使用MongoDB遇到的问题
- Scrapy框架安装遇到的问题
- scrapy中使用xpath遇到的中文问题
- 基于presto分布式查询mongodb的使用中遇到的问题
- scrapy中遇到的问题与解决
- 安装Scrapy过程中遇到的问题
- Spring框架使用中遇到的问题
- 基于Scrapy框架下的Python网络爬虫的实现
- 基于Python的scrapy框架的广州天气爬虫源码下载
- 全网友遇到的Mac安装Scrapy框架所有问题
- 全网友遇到的Mac安装Scrapy框架所有问题
- 基于Python,scrapy,redis的分布式爬虫实现框架
- 基于Scrapy框架的python网络爬虫(1)
- 基于Scrapy框架的python网络爬虫学习(2)
- 基于Scrapy框架的python网络爬虫学习(3)
- 基于Scrapy框架的python网络爬虫学习(3)
- 基于Python+scrapy+redis的分布式爬虫实现框架
- 第一个基于scrapy框架的python程序
- 使用C#数据库应用系统 第五章上机练习
- linux下安装与配置svn
- 用CSS画正方体
- javax.xml.bind.DatatypeConverter.printBase64Binary("abc".getBytes())报NullPointerException异常
- 集合之ArrayList
- 基于python的scrapy框架中使用MongoDB遇到的问题
- 身份证升级
- 前端html之img标签
- [Google Guava] 1.5-Throwables:简化异常和错误的传播与检查
- linux sed命令详解
- js端如何判断输入字段的长度(中文/英文)
- AVFoundation编程指南-使用 Assets
- 利用安卓源码的例子程序编写调用JNI
- 4、webService CXF的应用2 Spring的配置方法