当前位置:   article > 正文

Python爬虫实战之爬取链家广州房价_03存储

爬取的广州二手房价数据怎么存储

问题引入

系列目录:

Python爬虫实战之爬取链家广州房价_01简单的单页爬虫

Python爬虫实战之爬取链家广州房价_02把小爬虫变大

这一小节主要讲一下前面一直没有实现的存储,存储主要分两大类:文件和数据库。结合这次爬虫的数据量及后期分析的需要,这次主要介绍SQLite。

思路介绍

通过对SQLite数据库的封装,处理多线程的写入。Python的DB-API接口主要处理Connection对象和Curson对象,应用与数据库之间通信需要建立数据库连接,当一个连接(或连接池)建立后,可以创建一个游标,向数据库发送请求,然后从数据库中接收回应,对象的属性和方法可参考官方的文档说明。关于多线程和数据库的结合,还在摸索当中。

至此完成了对链家广州地区所有小区信息的爬取,可以此为模板实现对在售楼盘和成交记录的爬取,并扩展到其他城市、其他房产APP的爬取,对爬取后的数据进行分析。

代码示例

  1. class SQLiteWraper(object):
  2. """SQLite数据库的封装,处理多线程写入
  3. """
  4. def __init__(self, path, command='', *args, **kwargs):
  5. self.lock = threading.RLock()
  6. self.path = path
  7. if command != '':
  8. conn = self.get_conn()
  9. cu = conn.cursor()
  10. cu.execute(command)
  11. def get_conn(self):
  12. conn = sqlite3.connect(self.path)
  13. conn.text_factory = str
  14. return conn
  15. def conn_close(self, conn=None):
  16. conn.close()
  17. def conn_trans(func):
  18. def connection(self, *args, **kwargs):
  19. self.lock.acquire()
  20. conn = self.get_conn()
  21. kwargs['conn'] = conn
  22. rs = func(self, *args, **kwargs)
  23. self.conn_close(conn)
  24. self.lock.release()
  25. return rs
  26. return connection
  27. @conn_trans
  28. def execute(self, command, method_flag=0, conn=None):
  29. cu = conn.cursor()
  30. try:
  31. if not method_flag:
  32. cu.execute(command)
  33. else:
  34. cu.execute(command[0], command[1])
  35. conn.commit()
  36. except sqlite3.IntegrityError, e:
  37. print e
  38. return -1
  39. except Exception, e:
  40. print e
  41. return -2
  42. return 0
  43. 复制代码

结果如下:

  1. sqlite> select * from xiaoqu limit 10;
  2. http://gz.lianjia.com/xiaoqu/2113328145985364/|盈港国际|90天成交0套|0套正在出租|南沙|金洲|未知年建成|暂无均价|0套
  3. http://gz.lianjia.com/xiaoqu/2113328662147633/|叠翠峰|90天成交0套|0套正在出租|南沙|南沙区府|未知年建成|暂无均价|0套
  4. http://gz.lianjia.com/xiaoqu/2113668346245868/|富力天海湾|90天成交0套|0套正在出租|南沙|金洲|未知年建成|暂无均价|0套
  5. http://gz.lianjia.com/xiaoqu/2113826645830960/|通大旭日园|90天成交0套|0套正在出租|南沙|金洲|未知年建成|暂无均价|0套
  6. http://gz.lianjia.com/xiaoqu/2113306909962092/|南沙城|90天成交0套|0套正在出租|南沙|金洲|未知年建成|13226元/m2|0套
  7. http://gz.lianjia.com/xiaoqu/2114256349654567/|锦珠广场|90天成交0套|0套正在出租|南沙|金洲|2015年建成|暂无均价|0套
  8. http://gz.lianjia.com/xiaoqu/2112879567532818/|南沙奥园|90天成交0套|0套正在出租|南沙|金洲|未知年建成|7970元/m2|0套
  9. http://gz.lianjia.com/xiaoqu/2114393419248043/|环城北路|90天成交0套|0套正在出租|南沙|大岗镇|未知年建成|暂无均价|0套
  10. http://gz.lianjia.com/xiaoqu/2113199275994557/|南沙珠江湾|90天成交0套|0套正在出租|南沙|金洲|未知年建成|10376元/m2|0套
  11. http://gz.lianjia.com/xiaoqu/2114416717295822/|市南路东涌大街|90天成交0套|0套正在出租|南沙|东涌镇|未知年建成|暂无均价|0套
  12. 复制代码

您可能还想看

Hadoop/CDH

Hadoop实战(1)_阿里云搭建Hadoop2.x的伪分布式环境

Hadoop实战(2)_虚拟机搭建Hadoop的全分布模式

Hadoop实战(3)_虚拟机搭建CDH的全分布模式

Hadoop实战(4)_Hadoop的集群管理和资源分配

Hadoop实战(5)_Hadoop的运维经验

Hadoop实战(6)_搭建Apache Hadoop的Eclipse开发环境

Hadoop实战(7)_Apache Hadoop安装和配置Hue

Hadoop实战(8)_CDH添加Hive服务及Hive基础

Hadoop实战(9)_Hive进阶及UDF开发

Hadoop实战(10)_Sqoop import与抽取框架封装


微信公众号「数据分析」,分享数据科学家的自我修养,既然遇见,不如一起成长。

转载请注明:转载自微信公众号「数据分析」


读者交流电报群:

https://t.me/sspadluo

转载于:https://juejin.im/post/5a640c6c6fb9a01cbb393842

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/192542
推荐阅读
相关标签
  

闽ICP备14008679号