python爬取二手房库存,存数据库,生成折线图(中)

python爬取二手房库存,存数据库,生成折线图(中)

中篇会介绍爬去房价的信息,然后存入数据库

第一步 基本的配置信息

html页面 免不了会加载一些自己的js,css之类的。

  1. 新建自己的static文件夹,存放js等
  2. 打开settings文件
  3. 修改 STATIC_URL和STATICFILES_DIRS配置
image-20200508210209596

此时在html通过如下的方式导入js

  1. 修改第一行 {% load static %}
  2. 导入自己的js路径 <script src="{% static “js/echarts-all-3.js” %}">
image-20200508210637818

第二步 通过orm model生成表结构

通过如下的方式连接数据库 pymysql.install_as_MySQLdb()

image-20200508210901848

修改settings 的数据库连接信息


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 或者使用 mysql.connector.django
        'NAME': 'spiderpy',                #  数据库的名称
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST':'localhost',
        'PORT':'3306',
    }
}
image-20200508211040637

最后修改我们的model用于关联数据库表

class houseinfo(models.Model):
    # db_table = 'houseinfo'
    id=models.AutoField(primary_key=True)
    selling_house_number = models.IntegerField(default=0)
    trade_number_last90day = models.IntegerField(default=0)
    house_avg_price = models.IntegerField(default=0)
    increase_house = models.IntegerField(default=0)
    increase_people = models.IntegerField(default=0)
    people_seehouse_number = models.IntegerField(default=0)
    create_time = models.DateTimeField(auto_now_add=True)
image-20200508211243550

最后通过命令进行orm映射

执行如下的两次命令,即可开始进行orm映射

  1. python manage.py makemigrations house

  2. python manage.py migrate house

结果如下

image-20200508212345785

第三部 通过前台点击按钮到后台执行爬取入库

前台按钮执行如下的请求。我们需要去配置一个该url的路由

image-20200508211626448

修改对应url的path

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5cBIaC9K-1588946657552)(https://i.loli.net/2020/05/08/XaH2rCNUupcE8em.png)]

在views里面增加对应的方法

image-20200508211939389

重点是 getHouseNumber_Price_hot 这段爬取信息的代码。爬取之后通过orm对象的object的各种方法可以实现crud。

调用create方法即可存入数据库

getHouseNumber_Price_hot 代码如下,爬取代码不是重点

import requests
import  re
from bs4  import BeautifulSoup

from house import models


def  getHouseNumber_Price_hot():
      url ="https://cd.lianjia.com/fangjia/"
      headers = {
          "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE",
          "Referer": "https://cd.lianjia.com/chengjiao/",
          "Host": "cd.lianjia.com",
          "Connection":"close"
      }

      content = requests.get(url, headers=headers,verify=False).content.decode()
      soup = BeautifulSoup(content, 'html.parser')


      houseinfo = models.houseinfo;
      groups = re.search('>在售房源(.*?)套<', content, re.S)
      houseinfo.selling_house_number = groups.group(1)

      groups = re.search('>最近90天内成交房源(.*?)套<', content, re.S)
      houseinfo.trade_number_last90day = groups.group(1)

      numClass = soup.find_all(class_="num")
      for index, val in enumerate(numClass):
        if(index==0):
             houseinfo.house_avg_price = val.string
        if(index==1):
            # print(val.span.string)
            houseinfo.increase_house = val.span.string
        if (index == 2):
          # print(val.span.string)
          houseinfo.increase_people = val.span.string
        if (index == 3):
          # print(val.span.string)
          houseinfo.people_seehouse_number = val.span.string

      return houseinfo;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值