必威体育平台-IT资讯网必威体育平台-IT资讯网

Python爬取数万条北京租房数据,从6个维度告诉你房租疯涨的秘密

34r京燕头条-懂你的新闻才是你想看的

Python学习交流群:1004391443,这里有资源共享,技术解答,还有小编从最基础的Python资料到项目实战的学习资料都有整理,希望能帮助你更了解python,学习python。34r京燕头条-懂你的新闻才是你想看的

8月初,有网友在“水木论坛”发帖控诉长租公寓加价抢房引起关注。据说,一名业主打算出租自己位于天通苑的三居室,预期租金7500元/月,结果被二方中介互相抬价,硬生生抬到了10800。34r京燕头条-懂你的新闻才是你想看的

过去一个月,全国热点城市的房租如脱缰野马。一线的房租同比涨了近20%。一夜醒来,无产青年连一块立锥之地都悬了。34r京燕头条-懂你的新闻才是你想看的

从2018下半年开始,租金海啸汹汹来袭,资本狂欢,官方默然,房东纠结,租客尖叫。34r京燕头条-懂你的新闻才是你想看的

这不是一方的过错,而更像是一场全社会的“集体谋杀作品”。最令人不安的是,过去房地产的那套玩法和上涨逻辑,今天正在转移到房租上。34r京燕头条-懂你的新闻才是你想看的

房租暴涨的不只是北京。有数据显示,7月份北京、上海、广州、深圳、天津、武汉、重庆、南京、杭州和成都十大城市租金环比均有所上涨。其中北京、上海、深圳的租金涨幅最猛,北京7月份房租同比上涨3.1%,有小区甚至涨幅超过30%。34r京燕头条-懂你的新闻才是你想看的

34r京燕头条-懂你的新闻才是你想看的

▲图自“21世纪经济报道”《最新房租数据出炉,你一个月要交多少钱?(附房租地图)》一文34r京燕头条-懂你的新闻才是你想看的

接下来,笔者通过Python大法通过获取某网数万条北京租房数据,给大家说说真实的房租情况。34r京燕头条-懂你的新闻才是你想看的

还是老规矩,老套路(是不是有股熟悉的味道),笔者常用的三部曲:数据获取、数据清洗预览、数据分析可视化,与你一起探究最近房租的状况。34r京燕头条-懂你的新闻才是你想看的

01 数据获取34r京燕头条-懂你的新闻才是你想看的

把目前市场占有率最高的房屋中介公司为目标,来获取北京、上海两大城市的租房信息。(目标链接:https://bj.lianjia.com/zufang/)34r京燕头条-懂你的新闻才是你想看的

34r京燕头条-懂你的新闻才是你想看的

整体思路是:34r京燕头条-懂你的新闻才是你想看的

先爬取每个区域的url和名称,跟主url拼接成一个完整的url,循环url列表,依次爬取每个区域的租房信息。在爬每个区域的租房信息时,找到最大的页码,遍历页码,依次爬取每一页的二手房信息。

post代码之前简单讲一下这里用到的几个爬虫Python包:34r京燕头条-懂你的新闻才是你想看的

requests: 就是用来请求对链家网进行访问的包lxml:解析网页,用xpath表达式与正则表达式一起来获取网页信息,相比bs4速度更快

详细代码如下:34r京燕头条-懂你的新闻才是你想看的

import requestsimport timeimport refrom lxml import etree# 获取某市区域的所有链接def get_areas(url): print('start grabing areas') headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'} resposne = requests.get(url, headers=headers) content = etree.HTML(resposne.text) areas = content.xpath("//dd[@data-index = '0']//div[@class='option-list']/a/text()") areas_link = content.xpath("//dd[@data-index = '0']//div[@class='option-list']/a/@href") for i in range(1,len(areas)): area = areas[i] area_link = areas_link[i] link = 'https://bj.lianjia.com' + area_link print("开始抓取页面") get_pages(area, link)#通过获取某一区域的页数,来拼接某一页的链接def get_pages(area,area_link): headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'} resposne = requests.get(area_link, headers=headers) pages = int(re.findall("page-data=\'{\"totalPage\":(\d+),\"curPage\"", resposne.text)[0]) print("这个区域有" + str(pages) + "页") for page in range(1,pages+1): url = 'https://bj.lianjia.com/zufang/dongcheng/pg' + str(page) print("开始抓取" + str(page) +"的信息") get_house_info(area,url)#获取某一区域某一页的详细房租信息def get_house_info(area, url): headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'} time.sleep(2) try: resposne = requests.get(url, headers=headers) content = etree.HTML(resposne.text) info=[] for i in range(30): title = content.xpath("//div[@class='where']/a/span/text()")[i] room_type = content.xpath("//div[@class='where']/span[1]/span/text()")[i] square = re.findall("(\d+)",content.xpath("//div[@class='where']/span[2]/text()")[i])[0] position = content.xpath("//div[@class='where']/span[3]/text()")[i].replace(" ", "") try: detail_place = re.findall("([\\u4E00-\\u9FA5]+)租房", content.xpath("//div[@class='other']/div/a/text()")[i])[0] except Exception as e: detail_place = "" floor =re.findall("([\\u4E00-\\u9FA5]+)\(", content.xpath("//div[@class='other']/div/text()[1]")[i])[0] total_floor = re.findall("(\d+)",content.xpath("//div[@class='other']/div/text()[1]")[i])[0] try: house_year = re.findall("(\d+)",content.xpath("//div[@class='other']/div/text()[2]")[i])[0] except Exception as e: house_year = "" price = content.xpath("//div[@class='col-3']/div/span/text()")[i] with open('链家北京租房.txt','a',encoding='utf-8') as f: f.write(area + ',' + title + ',' + room_type + ',' + square + ',' +position+ ','+ detail_place+','+floor+','+total_floor+','+price+','+house_year+'\n') print('writing work has done!continue the next page') except Exception as e: print( 'ooops! connecting error, retrying.....') time.sleep(20) return get_house_info(area, url)def main(): print('start!') url = 'https://bj.lianjia.com/zufang' get_areas(url)if __name__ == '__main__': main()

02 数据清洗预览34r京燕头条-懂你的新闻才是你想看的

34r京燕头条-懂你的新闻才是你想看的

热门标签

友情链接