房价与生活息息相关,那么各地区房价情况和差别咋样呢?  可以打开网站或手机APP去查询一下,不过查看到的数据有限,很不过瘾~

作为一个合格的程序员,要懂得用代码解决问题!

第一步:打开一个房产交易平台,比如某家,以上海为例,随便找两个区,青浦区,浦东区 , F12 按起来,找一找有没有熟悉的接口,比如返回data里面包含list的

(ps:emmm....~~~~买不起买不起~~~)

第二步:分析一下上面的URL

  把上面的F12找到的URL弄出来https://sh.fang.xxxxxjia.com/loupan/pudong-qingpu/pg2/?_t=2,

  这里肯定有参数表示的是第几页!

观察一下,就2个数字,自己网页上面随便点点,发现pg2表示的是page几的意思,一页10个数据~

  好了,都分析清楚了! 接下来想个办法,从某家上面发送100个请求试试,这样拿到了1000个数据~(FBI警告:不要轻易爬取人家网站信息)

  

第三步:打开Python的编辑器 ,Talk is cheap. Show me the code

 这里使用 Urllib来发送http请求;xlwt来导出Excel, 另外用到了json;

import json
import urllib import xlwt all_info_list = [] # 定义一个列表存储数据 try: for i in range(1, 100):
# pageIndex = 2; # 第几页 ,用i代替
restUri = "https://sh.fang.xxxxjia.com/loupan/pudong-qingpu/pg" + str(i) + "/?_t=2"; # X家-浦东-青浦地区, 链接自己去找吧(#^.^#)
PostParam = ""
DATA = PostParam.encode('utf8')
req = urllib.request.Request(url=restUri, data=DATA, method='GET')
req.add_header('Content-type', 'application/x-www-form-urlencoded')
r = urllib.request.urlopen(req).read()
org_obj = json.loads(r.decode('utf8')) all_info_list.extend(org_obj['data']['list']) # 将返回数据添加到总列表中
print("请求完毕!" + str(i)) book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('ke_qq')
keys = ['address', 'address_remark', 'average_price', 'avg_price_start', 'avg_price_start_unit', 'avg_unit_price',
'min_frame_area','max_frame_area','subway_distance',
'bizcircle_name', 'district_name', 'frame_rooms_desc', 'house_type', 'on_time', 'open_date']
# 表头
head = ['地址', '地标', '均价', '起步价', '单位', '单价',
'最小面积', '最大面积','距离地铁',
'商圈名称', '区名称', '居室类型', '房屋类型', '上线时间', '开盘时间']
for h in range(len(head)):
sheet.write(0, h, head[h]) # 写入表头
i = 1
for list_dict in all_info_list:
j = 0
for key in keys:
sheet.write(i, j, list_dict[key])
j += 1
i += 1 book.save('I:\spiderfile\lou.xls')
print("---end----")
except Exception as e:
print(e)

代码挺简单的,返回的数据格式比较清晰;  至于数据翻译的对不对,自己去把握咯,

  这里只选取了一部分的房价数据到Excel中,位置是在I:\spiderfile\lou.xls ,简单看一下数据长啥样的~

 总结: 好好上班,没事看什么房价~

Python获取房价信息和导出EXCEL的更多相关文章

  1. python 获取对象信息

    当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> ...

  2. Python 获取车票信息

    提示:该代码仅供学习使用,切勿滥用!!! 先来一个git地址:https://gitee.com/wang_li/li_wang 效果图: 逻辑: 1.获取Json文件的内容 2.根据信息生成URL ...

  3. 用python获取服务器硬件信息[转]

    #!/usr/bin/env python # -*- coding: utf-8 -*- import rlcompleter, readline readline.parse_and_bind(' ...

  4. 用python获取ip信息

    1.138网站 http://user.ip138.com/ip/首次注册后赠送1000次请求,API接口请求格式如下,必须要有token值 import httplib2 from urllib.p ...

  5. python获取对象信息

    获取对象信息 拿到一个变量,除了用 isinstance() 判断它是否是某种类型的实例外,还有没有别的方法获取到更多的信息呢? 例如,已有定义: class Person(object): def ...

  6. python获取机器信息脚本(网上寻找的)

    获取机器信息(待测试) # -*- coding: UTF-8 -*- import psutil import json import os import socket import struct ...

  7. python获取的信息列表微信公共平台和用户头像

    转载注明原文地址:http://blog.csdn.net/btyh17mxy/article/details/25207889 只写模拟登陆的方式获取微信从信息和头像库列表公共平台, - 相关后,功 ...

  8. 关于Python 获取windows信息收集

    收集一些Python操作windows的代码 (不管是自带的or第三方库)均来自网上 1.shutdown 操作 定时关机.重启.注销 #!/usr/bin/python #-*-coding:utf ...

  9. Python - 获取帮助信息

    1- Python Manuals 自带CHM格式的Python Manuals存放在\Python<x.x>\Doc\目录下.可以在IDLE界面下按F1键或点击help选项下Python ...

随机推荐

  1. python_django_admin

    admin 是Django提供的基于web的管理工具,是系统管理员用于数据的输入,删除和查询的管理工具. 超级管理员在settings中的集成:INSTALLED_APPS=['django.cont ...

  2. ECMAScript6 Promise

    Promise在Javascript中早就已经实现,在ECMAScript6中正式加入到标准.那么Promise到底是干什么的?怎么用? 一.Promise介绍 Promise是一个对象,用来传递异步 ...

  3. Sqlserver复杂查询

    --联表修改 update xyzrb set xyzrb.xy_card=tablsb.card from xyzrb left join tablsb on xyzrb.xybh=tablsb.x ...

  4. PHP FILTER_VALIDATE_FLOAT 过滤器

    定义和用法 FILTER_VALIDATE_FLOAT 过滤器把值作为浮点数来验证. Name: "float" ID-number: 259 实例 <?php $var=1 ...

  5. bzoj1046题解

    [解题思路] 先倒着求一遍LIS,然后对于每个询问L从左到右找到第一个大于等于L的上升序列即可.复杂度O(N(log2N+M)). [参考代码] #pragma GCC optimize(2) #in ...

  6. curl查看index以及settings

    1.查看mapping curl -u elastic:elastic -XGET "127.0.0.1:9200/index_name/_mapping" 2.查看setting ...

  7. DOM学习总结(二)

    一.什么是DOM属性 DOM属性简单来说就是HTML的属性值 二.常见的DOM属性有哪些? 1.innerHTML 属性 获取元素的内容,想要拿到某个元素的文本内容,直接在后面加 .innerHTML ...

  8. NOIp2018集训test-10-19 (bike day5)

    Bike老爷问了好几天到底要怎样简单的题目你们才能AK啊终于在他每天降难度直到要走了才出了一套我们能AK的题.虽然前几天的题换成llj肯定随便AK. 其实最近有点方虽然通常最后都写完了把该拿的分拿了该 ...

  9. QT--QSocketNotifier类介绍

      QSocketNotifier 用来监听系统文件操作,将操作转换为Qt事件进入系统的消息循环队列.并调用预先设置的事件接受函数,处理事件. 一共存在3类事件:read,write,exceptio ...

  10. cgo 和 Go 语言是两码事

    cgo不是Go 借用 JWZ的一句话 有些人,当他们面临一个问题时,认为“我知道,我会使用 cgo ”.那么现在,他们有了两个问题. 最近有人在 Gopher 的 Slack Channel 上使用 ...