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