# datamining_20 **Repository Path**: geoffreylam/datamining_20 ## Basic Information - **Project Name**: datamining_20 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-27 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Fianl_web_mining # 链家之疫情对北京房价的影响分析(爬取的数据用于pandas数据分析) 运用了scrapy中的spiders进行数据挖掘
起始url:https://bj.lianjia.com/fangjia/
爬取参数:
* 北京主要地区的平均参考价格 * 平均挂牌价格 * 新增房源量 * 带看人数 ## MVP加/价值主张宣言 * 爬取的数据可以直接客观的给用户展示整个挖掘分析的流程,这样让数据更有可信度。 * 希望爬取数据:链家网下所有北京主要地区的平均参考价格,平均挂牌价格以及新增房源量与带看人数的动态折线图数据 * 分析疫情对北京房价的影响从而推算买房的好时机,给是否买房,何时买房有困扰的人群参考,帮助目标人群正确选择买房时机 * 挖掘19年7月到20年6月北京的房价数据,通过时间和地区的时空交互完成房价各指标的分析,让目标人群更直观,并且可交互性的得到可视化图,帮助他们解决是否买房,何时买房的困扰。 ## 问题情境的数据参数选择 ### 挖掘Query参数 挖掘起始url:https://bj.lianjia.com/fangjia/
运用框架:scrapy中的spiders
北京各地区数据、平均参考价格、平均挂牌价格、新增房源量与带看人数 ``` def parse(self, response): url = requests.get(response.url) ur = 'https://bj.lianjia.com/fangjia/priceMap/' ur = requests.get(ur) conts = json.loads(ur.text) for i in range(2, 100): try: url = 'https://bj.lianjia.com/fangjia/priceTrend/?region=district®ion_id=' + str(conts[str(i)]['id']) urls = requests.get(url) cont = json.loads(urls.text) if len(cont) == 0: # print('备用') url = 'https://bj.lianjia.com/fangjia/priceTrend/?region=bizcircle®ion_id=' + str(conts[str(i)]['id']) urls = requests.get(url) cont = json.loads(urls.text) dict = {'月份': cont['currentLevel']['month'], '地区': conts[str(i)]['name'], '全部挂牌均价': cont['currentLevel']['listPrice']['total'], '一居挂牌均价': cont['currentLevel']['listPrice']['1_bed'], '二居挂牌均价': cont['currentLevel']['listPrice']['2_bed'], '三居挂牌均价': cont['currentLevel']['listPrice']['3_bed'], '其他挂牌均价': cont['currentLevel']['listPrice']['other'], '全部参考均价': cont['currentLevel']['dealPrice']['total'], '一居参考均价': cont['currentLevel']['dealPrice']['1_bed'], '二居参考均价': cont['currentLevel']['dealPrice']['2_bed'], '三居参考均价': cont['currentLevel']['dealPrice']['3_bed'], '其他参考均价': cont['currentLevel']['dealPrice']['other'], '经度': conts[str(i)]['longitude'], '纬度': conts[str(i)]['latitude']} url = url + '&analysis=1' url = requests.get(url) cont = json.loads(url.text) # 'https://bj.lianjia.com/fangjia/priceTrend/?region=district®ion_id=23008613&analysis=1' dict['新增房源量'] = cont['houseAmount'] dict['带看次数'] = cont['showAmount'] yield dict ``` ## 思路方法及具体执行 ### 爬取思路: * 起始url:https://bj.lianjia.com/fangjia/ * 希望爬取数据:该页面下所有北京主要地区的平均参考价格,平均挂牌价格以及新增房源量与带看人数的动态折线图数据 * 由于动态折线图是动态加载,需要找到其api接口地址,才可获取,通过分析页面html,能通过正则表达式获取 * 对应动态加载文件的id,同时也可获取其他主要地区的id,通过规则结合id即可进入api文件爬取信息 * 读取api文件url后,将页面信息通过json格式转为字典,通过键值对应获取信息 * 最后yield 字典, 在pipelines中将字典变为dataframe格式转存csv文件 ## 文档形式专业程度 ### 学习总结 **在经过一段时间的构思和百度寻求思路的过程中,某一天由于最近说听说的房价上涨,南涨北跌,冒出一个想法,为什么会形成这样的现象,刚刚好要写期末项目,就着手于这个主题方向。运用了scrapy框架进行了数据挖掘,看似工程量巨大,但是其实不算太难,掌握原理和思维就可以很好的做出了(当然也参考了网络上一些代码和理念,有些还未能完善的,就只能好好学习,再去实操代码了)** ### 项目演变过程 由于最近说听说的房价上涨,南涨北跌,冒出一个想法,为什么会形成这样的现象,刚刚好要写期末项目,就着手于这个主题方向。 * **第一版本**:分析广州和上海的疫情对房价的影响(但是工程量巨大,数据量巨大,太难了)pass * **第二版本**:分析广州的疫情对房价的影响(但是链家网的广州房价数据抓取不到)pass * **第三版本**:最终版,发现北京的数据比较多,但是又不复杂,而且6月份北京再次爆发疫情,这对该项目比较有说服力,最后选择了分析北京疫情对房价的影响。 * [链家广州地区链接](https://gz.lianjia.com/) * [链家上海地区链接](https://sh.lianjia.com/) * [链家北京地区链接](https://bj.lianjia.com/) ### 参考内容 * **非常感谢一些博主分享的内容,让我能在不算长的时间里完成该项目** * **感谢wifi连不上博主发表的文章,给了我思路** [wifi连不上博主文章链接](https://blog.csdn.net/wifi_wuxian/article/details/94437168) * **感谢weixin_34050519博主的文章,给了我思路的框架区爬取数据** [weixin_34050519博主文章链接](https://blog.csdn.net/weixin_34050519/article/details/93858170) * [参考获取经纬度链接](https://blog.csdn.net/wifi_wuxian/article/details/94437168)