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

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

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

第一步 基本的配置信息

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

新建自己的static文件夹,存放js等

打开settings文件

修改 STATIC_URL和STATICFILES_DIRS配置

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

修改第一行 {% load static %}

导入自己的js路径

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

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

修改settings 的数据库连接信息

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django

'NAME': 'spiderpy', # 数据库的名称

'USER': 'root',

'PASSWORD': '123456',

'HOST':'localhost',

'PORT':'3306',

}

}

最后修改我们的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)

最后通过命令进行orm映射

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

python manage.py makemigrations house

python manage.py migrate house

结果如下

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

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

修改对应url的path

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

在views里面增加对应的方法

重点是 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('>在售房源(.*?)套

houseinfo.selling_house_number = groups.group(1)

groups = re.search('>最近90天内成交房源(.*?)套

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值