基于Scrapy框架的python网络爬虫学习(3)
2016-07-21 11:09
417 查看
3.实战学习
数据慢慢变多之后,为了方便后续的分析处理,常常要用到数据库,因此我们需要将爬取的数据存入数据库中,最简单的方法就是将爬取的csv文件导入数据库。修改pipelines.py中的代码,连接数据库并向数据库插入数据。之前写的关于编码部分的代码可以注释掉。这里使用的是Navicat for MySQL。下载与数据库连接的包步骤和刚开始安装scrapy一样简单。数据库的使用就不介绍了。
def __init__(self): #初始化连接mysql的数据库相关信息 self.dbpool = adbapi.ConnectionPool( dbapiName='MySQLdb', host='211.87.229.254', db = 'scrapy', user='zhilian', passwd='admin', cursorclass = MySQLdb.cursors.DictCursor, charset = 'utf8', use_unicode = False ) def process_item(self, item, spider): query = self.dbpool.runInteraction(self._conditional_insert, item) return item def _conditional_insert(self, tx, item): sql = 'insert into scrapy.testzhi(position,company,location,'+ 'salary,time,number,welfare,scale,experien'+ 'ce,education,description,namee) values'+ '(%s,%s,%s,%s,%s,%s,%s,%s,'+ '%s,%s,%s,%s)' tx.execute(sql,(item['position'],item['company'] ,item['location'],item['welfare'], item['scale'],item['experience'], item['education'],item['description'], item['namee']))
不要忘记在数据库中建表,在scrapy数据库中建了一个testzhi表,下面是表中的各列。因为location和description的字数比较多,将它们类型设置为longtext
运行后刷新数据库会发现数据库出现了数据,但是只有很少的一些,命令行中也报错,仔细观察后发现,问题出在的格式上,因为item项是以list存储的,包含多项的list会有“,”,将这些list转换为String类型。
以welfare为例,很笨的方式。
wel = a1.xpath('div/span/text()').extract() wel1='' for w in wel: wel1=w+'/'+wel1 item['welfare']=wel1
这样貌似解决了一部分问题,数据库里的数据还不是很完整有5115条。继续寻找解决方案。感觉算是可接受的误差?
相关文章推荐
- 现在市面上网络监控系统分析
- HTTP协议详解
- 使用file_get_contents提交http post
- HTTP.Socket.TCP详解
- Java中创建对象的5种方式 – 码农网 http://www.codeceo.com/article/5-ways-java-create-object.html
- UDP协议的应用
- Java网络编程 线程
- iOS开发中大部分App的网络数据交换是基于HTTP协议的。本文将简单介绍在Swift中使用HTTP进行网络请求的几种方法。
- 【iOS开发】AFN报错Code=-1007 "too many HTTP redirects"
- 每个程序员和设计师必做的10项运动(http://begeek.cn/post/8271.html?_biz=MjM5OTA1MDUyMA==&mid=407358558&idx=2&sn=b218)
- 网络学习笔记之IP数据报的分片与组装
- TCP详解
- 强烈推荐:程序员接私活那点事(http://www.jianshu.com/p/cfab9e80b7c4)
- neural-networks-and-deep-learning network3.py
- HttpURLConnection与 HttpClient 区别
- 数据包是如何在网络中传输的
- java多线程下载网络图片
- 程序员常用的技术网站(http://bbs.jointforce.com/topic/17717)
- Android 开发之判断当前是否有网络可用
- asp.net 使用HttpModule记录全局错误