django+spider简易爬虫搭建

来源:互联网 发布:大数据研发工程师 编辑:程序博客网 时间:2024/05/18 12:36

今天有空,记录一下搭建爬取链家北京二手房房价的过程,其目的是为了记录每套房源的房价调整过程。我记得12~13年的时候,链家app是可以看到每套房源的价格波动的,现在的app不行了。


工程搭建

python django spider

  • 创建django 工程
django-admin startproject houseSpider cd houseSpiderpython manage.py startapp dbmodel # 这里增加一个app,用于数据库操作
  • 创建 spider
scrapy startproject lianjiaSpider

* 这两个命令非常相似,scrapy整体框架实现上与Django框架原理很相似,两者都强调松耦合,高度的抽象使编程简单、简洁化,与python设计理念是一致的 *

让spider爬去的数据存入数据库

django给我们提供ORM模型极大的方便了我对数据库的操作,现在我要做的是让spider的item直接使用models.py,之前的博客已经有了该怎么操作–> Django的models.py在外部独立使用 <–
1. 将创建的django项目拷贝到爬虫项目中

  • houseSpider是网站,里面有dbmodule,houseSpider,其余的文件是爬虫文件,不要动他们。

    这里写图片描述
    这时,我们发现spider 有一个settings.py , django里也有一个settings.py,这两个文件可以合并
    • 创建一个爬虫
scrapy genspider ljershoufang 'bj.lianjia.com'
  • 注意下面的这句话
os.environ['DJANGO_SETTINGS_MODULE'] = 'houseSpider.houseSpider.settings'

这句话需要在每个爬虫里加上,要不然是用不了models的

大概的方法是这样的,中间有写细节问题,我没有及时记录,记不清了。当网站可以运行了,我们就要考虑数据处理的问题了。


数据处理

每日爬去的数据大概有25000左右,我想做的是跟踪每个房源的价格,比如今天200万,明天190万,后台220万,这种都需要对比的。开始的方法是这样的。
* 原始数据,没有经过任何的加工处理,直接存入数据库,查询的时候动态计算。结果耗时是巨大的,展示2000条数据需要大概10分钟,不能忍。
优化1. 开启n个线程,把所有的数据分n片,各种group by 然后汇总结果,期间学习了不少多线程的知识,展示2000条数据大概5分钟,不能忍。
优化2. 爬去数据的时候,后台自己处理。查询数据不做任何计算。展示2000条数据1秒左右。
结果展示
这里写图片描述

这样,基本能用了。您可以访问小小房虫 感受一下

原创粉丝点击