Scrapy用Twisted异步操作Mysql
来源:互联网 发布:网站程序员培训中心 编辑:程序博客网 时间:2024/06/05 13:34
1首先在setting中配置好数据库的信息,便于修改管理
MYSQL_HOST='192.168.0.2'#主机MYSQL_DBNAME='dbname'#数据库名称MYSQL_USER='root'#用户名MYSQL_PASSWORD='jian'#密码
在pipelines.py中
# Twisted只是提供一个异步容器,本身没提供数据库链接class MysqlTwistedPipeline(object): def __init__(self,dbpool): self.dbpool = dbpool #从配置中获取信息 @classmethod def from_settings(cls, settings): dbparms = dict( host=settings["MYSQL_HOST"], db=settings['MYSQL_DBNAME'], user=settings['MYSQL_USER'], passwd=settings['MYSQL_PASSWORD'], charset='utf8', cursorclass=MySQLdb.cursors.DictCursor, use_unicode=True ) dbpool = adbapi.ConnectionPool("MySQLdb", **dbparms) return cls(dbpool) def process_item(self, item, spider): #使用twisted将mysql插入编程异步执行 #第一个参数是我们定义的函数 query = self.dbpool.runInteraction(self.do_insert,item) #错误处理 query.addErrorback(self.handle_error) #错误处理函数 def handle_error(self,falure): print(falure) def do_insert(self,cursor,item): #执行具体的插入 insert_sql = """ insert into jobbole_article(title,create_date,url,url_object_id,front_image_url ,comment_nums,fav_nums,praise_nums,content) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s) """ cursor.execute(insert_sql, (item['title'], item['create_date'], item['url'], item['url_object_id'] , item['front_image_url'], item['comment_nums'] , item['fav_nums'], item['praise_nums'], item["content"]))
最后一定要在setting中配置
#注,这个方法默认是被注释掉的ITEM_PIPELINES = { 'AticleSpider.pipelines.MysqlTwistedPipeline': 1,}
阅读全文
0 0
- Scrapy用Twisted异步操作Mysql
- scrapy操作MySQL数据库
- twisted scrapy安装
- Scrapy与Twisted
- 安装Twisted、Scrapy爬虫框架
- python Twisted Scrapy的安装
- Twisted异步编程
- twisted异步机制-Deferred
- twisted异步机制--Deferred
- Twisted: 用 getPage 完成 POST 操作
- Python_Ubuntu 12.04 安装Twisted、Scrapy爬虫框架
- scrapy安装,Twisted报错处理
- 从Twisted谈起异步处理
- 使用twisted编写异步服务器
- Python/Twisted 异步编程教程
- twisted.http 异步访问站点
- 使用twisted编写异步服务器
- Twisted与异步编程入门
- Java中的Comparable和Comparator
- java之program arguments与VM arguments
- BZOJ1106: [POI2007]立方体大作战tet
- 用Python学《微积分B》(常数项级数)
- 相机标定的原理
- Scrapy用Twisted异步操作Mysql
- 使用UI框架和不使用UI框架情况分析
- 详解JavaWeb中的文件上传与下载
- 源码剖析Linux epoll实现机制及Linux上惊群
- Android 通用流行框架大全
- 【设计】工厂模式--C++源代码(VS2015)
- 风云论坛
- 错误: CXX0030:无法计算表达式的值(VS2010)
- 2017大二第五周学习笔记