# 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)