Python抓取上海各地区房价平均值

原创 2015年06月12日 14:15:55

昨天用Python写了一个抓取上海地区二手房价格的程序,Python2.7,数据来自赶集网。由于在赶集网查看房价不需要登录,所以程序也十分简单。程序代码如下:

# -*- coding:utf-8 -*-

import requests
import re

#本程序用于抓取赶集网上海各地区二手房房价均值,默认抓取页数为50页。
#使用python语言,requests库抓取网页,re库用于正则抓取。


print "本程序用于计算赶集上海二手区房价,单位万/平米"
print ('''每个区对应代码如下:
0:显示上海所有区单独的平均房价;
1:浦东新区;
2:闵行区;
3:徐汇区;
4:长宁区;
5:普陀区;
6:静安区;
7:卢湾区;
8:黄浦区;
9:闸北区;
a:虹口区;
b:杨浦区;
c:宝山区;
d:嘉定区;
e:青浦区;
f:松江区;
g:金山区;
h:奉贤区;
i:南汇区;
j:崇明区;
k:上海周边;
''')

#各地区页面代码
num_area = {
    '1':'http://wap.ganji.com/sh/fang5/pudongxinqu/o',
    '2':'http://wap.ganji.com/sh/fang5/minhang/o',
    '3':'http://wap.ganji.com/sh/fang5/xuhui/o',
    '4':'http://wap.ganji.com/sh/fang5/changning/o',
    '5':'http://wap.ganji.com/sh/fang5/putuo/o',
    '6':'http://wap.ganji.com/sh/fang5/jingan/o',
    '7':'http://wap.ganji.com/sh/fang5/luwan/o',
    '8':'http://wap.ganji.com/sh/fang5/huangpu/o',
    '9':'http://wap.ganji.com/sh/fang5/zhabei/o',
    'a':'http://wap.ganji.com/sh/fang5/hongkou/o',
    'b':'http://wap.ganji.com/sh/fang5/yangpu/o',
    'c':'http://wap.ganji.com/sh/fang5/baoshan/o',
    'd':'http://wap.ganji.com/sh/fang5/jiading/o',
    'e':'http://wap.ganji.com/sh/fang5/qingpu/o',
    'f':'http://wap.ganji.com/sh/fang5/songjiang/o',
    'g':'http://wap.ganji.com/sh/fang5/jinshan/o',
    'h':'http://wap.ganji.com/sh/fang5/fengxian/o',
    'i':'http://wap.ganji.com/sh/fang5/nanhui/o',
    'j':'http://wap.ganji.com/sh/fang5/chongming/o',
    'k':'http://wap.ganji.com/sh/fang5/shanghaizhoubian/o'
}

#各地区显示代码
area = {
    '1':'浦东新区',
    '2':'闵行区',
    '3':'徐汇区',
    '4':'长宁区',
    '5':'普陀区',
    '6':'静安区',
    '7':'卢湾区',
    '8':'黄浦区',
    '9':'闸北区',
    'a':'虹口区',
    'b':'杨浦区',
    'c':'宝山区',
    'd':'嘉定区',
    'e':'青浦区',
    'f':'松江区',
    'g':'金山区',
    'h':'奉贤区',
    'i':'南汇区',
    'j':'崇明区',
    'k':'上海周边'
}


#获得房价均值函数
def get_price(numb):
    sp_list = []
    for n in range(1,50): #抓取前50页
        url = num_area[numb]+str(n)
        urlpage = requests.get(url)
        urlpage.encoding = 'utf-8'
        urltx = urlpage.text

        size_price = re.findall(u'(\d+)\u33a1.*?(\d+)\u4e07\u5143',urltx,re.S)#从页面获取房价和面积
        for sp in size_price:
            sp_list.append(sp)

    priclist = []
    sum_pric = 0
    i = 0
    for sizepri in sp_list:#计算平均房价
        pric = round(float(sizepri[1])/float(sizepri[0]),2)      
        #print pric
        priclist.append(pric)
        sum_pric = sum_pric + pric
        i = i + 1

    print (area[numb]+"共获取二手房数量:"+str(i)+",平均房价为:"+str(round(float(sum_pric)/float(i),2))+"万元每平方")

#获取输入区域
def get_area():
    print('')
    areanum = str(raw_input("请输入需要查询的区代码,可一次输入多个代码:"))
    if str(0) in areanum:#输入有0则计算全部区域
        for numbe in ('1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k'):
            get_price(numbe)
    else:#输入无0则计算输入区域
        for numb in ('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k'):
            if str(numb) in areanum:
                print numb
                get_price(numb)

get_area()

代码托管在:https://github.com/chroming/sh_house_price/
不过由于赶集网二手房的内容基本都是广告,而且应该是官方合作的广告,因为所有页的数据都一直在变动。不过这不妨碍我们用它练手。当前抓取到的价格如下:
浦东新区共获取二手房数量:655,平均房价为:3.35万元每平方
闵行区共获取二手房数量:640,平均房价为:2.52万元每平方
徐汇区共获取二手房数量:640,平均房价为:3.95万元每平方
长宁区共获取二手房数量:643,平均房价为:3.57万元每平方
普陀区共获取二手房数量:647,平均房价为:2.91万元每平方
静安区共获取二手房数量:559,平均房价为:5.19万元每平方
卢湾区共获取二手房数量:576,平均房价为:4.86万元每平方
黄浦区共获取二手房数量:638,平均房价为:4.42万元每平方
闸北区共获取二手房数量:640,平均房价为:3.23万元每平方
虹口区共获取二手房数量:641,平均房价为:3.15万元每平方
杨浦区共获取二手房数量:647,平均房价为:3.1万元每平方
宝山区共获取二手房数量:650,平均房价为:2.16万元每平方
嘉定区共获取二手房数量:644,平均房价为:1.47万元每平方
青浦区共获取二手房数量:641,平均房价为:1.51万元每平方
松江区共获取二手房数量:640,平均房价为:1.68万元每平方
金山区共获取二手房数量:638,平均房价为:0.81万元每平方
奉贤区共获取二手房数量:638,平均房价为:2.98万元每平方
南汇区共获取二手房数量:640,平均房价为:1.9万元每平方
崇明区共获取二手房数量:637,平均房价为:0.91万元每平方
上海周边共获取二手房数量:647,平均房价为:0.61万元每平方

版权声明:本文为博主原创文章,未经博主允许不得转载。

python爬取上海链家网二手房数据

1、数据爬取说明 1.1 爬取目的 一个朋友在学习自考,作业是爬取数据进行数据分析,正好最近我在学习python,所以他委托我帮他完成这一工作 1.2使用模块 requests进行网络请求、b...
  • sinat_36772813
  • sinat_36772813
  • 2017年06月20日 15:10
  • 2715

python爬虫——爬取链家房价信息(未完待续)

爬取链家房价信息(未完待续) items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items...
  • qiqiyingse
  • qiqiyingse
  • 2017年04月01日 15:23
  • 4974

从零开始编写简易python爬虫:每日房价的获取

1、从零开始编写简易python爬虫:每日房价的获取     本文主要是对eclipse、python3下如何做准备工作以编写一个简易的爬虫程序进行示例(本文将采用获取“天津市国土资源和房屋管理局政务...
  • smartcore
  • smartcore
  • 2017年02月22日 12:56
  • 1114

python爬虫爬取链家二手房信息

一种有想做个爬虫的想法,正好上个月有足够的时间和精力就学了下scrapy,一个python开源爬虫框架。好多事开始以为很难,但真正下定决心去做的时候,才发现非常简单,scrapy我从0基础到写出第一个...
  • xindoo
  • xindoo
  • 2017年05月20日 15:43
  • 4575

Python房价可视化分析的思路及实战

作者利用网络爬虫抓取了安居客、房天下和58同城这几个网站上房价的数据,利用数据分析对文山市的房价情况进行的简单的分析。...
  • u013115001
  • u013115001
  • 2016年11月28日 22:32
  • 3065

Python股票历史数据预处理(一)

Python股票历史数据预处理(一) 在进行量化投资交易编程时,我们需要股票历史数据作为分析依据,下面介绍如何通过Python获取股票历史数据并且将结果存为DataFrame格式。处理后的股票历史数...
  • suiyingy
  • suiyingy
  • 2016年11月21日 10:51
  • 2481

Python房价可视化分析的思路及实战

作者利用网络爬虫抓取了安居客、房天下和58同城这几个网站上房价的数据,利用数据分析对文山市的房价情况进行的简单的分析。...
  • u013115001
  • u013115001
  • 2016年11月28日 22:32
  • 3065

【Python爬虫系列】Python 爬取搜房网二手房数据

用Python爬取搜房网二手房价格数据
  • yuzhucu
  • yuzhucu
  • 2017年01月06日 10:41
  • 3215

【Python爬虫系列】Python 爬取上海链家二手房数据

Python 爬取上海链家网二手房数据
  • yuzhucu
  • yuzhucu
  • 2017年01月06日 11:51
  • 3915

前端开发薪资之各地区对比(图文分析)

转载至:http://www.aseoe.com/show-23-402-1.html
  • robertsong2004
  • robertsong2004
  • 2014年09月03日 15:04
  • 997
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python抓取上海各地区房价平均值
举报原因:
原因补充:

(最多只允许输入30个字)