• 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;
    
  • 相关阅读:
    lombok注解详细介绍
    基于注解的SpringMVC大致开发流程
    Thymeleaf知识点总结
    thymeleaf相关知识
    Windows 命令行查看占用端口,并关闭操作
    身份证号码的正则表达式及验证详解
    mysql的查询过程和SQL语句优化
    MySQL数据库知识点整理
    MySQL数据库
    MySQL数据库
  • 原文地址:https://www.cnblogs.com/fangyuandoit/p/13713782.html
Copyright © 2020-2023  润新知