zoukankan      html  css  js  c++  java
  • 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:spiderfilelou.xls')
        print("---end----")
    except Exception as e:
        print(e)

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

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

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

  • 相关阅读:
    杨老师课堂_VBA学习教程之根据部门列创建工作表
    杨老师课堂_Java核心技术下之控制台模拟微博用户注册案例
    杨老师课堂_Java核心技术下之控制台模拟记事本案例
    杨校老师课堂之JavaScript右下角广告弹框教程
    JavaScript的数组知识案例之随机点名器
    SET QUOTED_IDENTIFIER ON
    SET ANSI_NULLS ON
    OLEDB和ODBC的区别
    教你认识主板上的主要芯片
    递归和迭代有什么区别
  • 原文地址:https://www.cnblogs.com/coloz/p/11882758.html
Copyright © 2011-2022 走看看