Python获取房价信息和导出EXCEL

房价与生活息息相关,那么各地区房价情况和差别咋样呢?  可以打开网站或手机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 ,简单看一下数据长啥样的~

 

 

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

 

posted @ 2019-11-18 16:28  将军上座  阅读(717)  评论(0编辑  收藏  举报