毕业了,想在本地城市发展。租房就是我面临的头等大事,哪里房源多?哪里的房价最便宜?我要面朝南向的,我还要高层的。。。。

没问题,爬虫搞定!

首先我们打开链家租房首页,可以看到在租的房源有61363套,这么多的房源肯定有我心仪的那一套。

我们想要获取的信息有房源的名称、房子的位置、房子的朝向、房子面积、房子布局、和最重要的一点就是房子的价格!

1.首先我们来获取网页链接:

https://xa.lianjia.com/zufang/pg1/
https://xa.lianjia.com/zufang/pg5/
https://xa.lianjia.com/zufang/pg8/

可以发现翻页的是由page参数决定的。

2.再加上以下3个参数模拟浏览器访问。

url = f'https://xa.lianjia.com/zufang/pg{page}/'# 模拟浏览器headers = {'Referer':f'https://xa.lianjia.com/zufang/pg{page}/','User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4484.7 Safari/537.36','Cookie':'select_city=610100; lianjia_uuid=0026697d-0b4b-404a-9700-6ffdee75e3be; _smt_uid=60928372.2a8cb08f; UM_distinctid=1793c51792a47d-0751bdbf625319-71153641-1fa400-1793c51792ba23; _jzqckmp=1; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%221793c517f2b1-0931efe9a56ec3-71153641-2073600-1793c517f2c463%22%2C%22%24device_id%22%3A%221793c517f2b1-0931efe9a56ec3-71153641-2073600-1793c517f2c463%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E4%BB%98%E8%B4%B9%E5%B9%BF%E5%91%8A%E6%B5%81%E9%87%8F%22%2C%22%24latest_referrer%22%3A%22https%3A%2F%2Fwww.baidu.com%2Fother.php%22%2C%22%24latest_referrer_host%22%3A%22www.baidu.com%22%2C%22%24latest_search_keyword%22%3A%22%E9%93%BE%E5%AE%B6%22%2C%22%24latest_utm_source%22%3A%22baidu%22%2C%22%24latest_utm_medium%22%3A%22pinzhuan%22%2C%22%24latest_utm_campaign%22%3A%22wyxian%22%2C%22%24latest_utm_content%22%3A%22biaotimiaoshu%22%2C%22%24latest_utm_term%22%3A%22biaoti%22%7D%7D; _ga=GA1.2.1228540593.1620214646; _gid=GA1.2.1956937792.1620214646; Hm_lvt_9152f8221cb6243a53c83b956842be8a=1620214650; digv_extends=%7B%22utmTrackId%22%3A%2221583074%22%7D; lianjia_ssid=5b2db515-b320-4c75-b676-e28e8b35d4ec; CNZZDATA1255849580=598881228-1620209949-https%253A%252F%252Fwww.baidu.com%252F%7C1620296334; CNZZDATA1254525948=1027467720-1620211125-https%253A%252F%252Fwww.baidu.com%252F%7C1620296930; CNZZDATA1255633284=1302951133-1620212328-https%253A%252F%252Fwww.baidu.com%252F%7C1620297661; CNZZDATA1255604082=1771052689-1620212893-https%253A%252F%252Fwww.baidu.com%252F%7C1620294612; _jzqa=1.3096002108450772000.1620214643.1620214643.1620299994.2; _jzqc=1; _jzqy=1.1620214643.1620299994.1.jzqsr=baidu|jzqct=%E9%93%BE%E5%AE%B6.-; _qzja=1.2112865692.1620214644413.1620214644413.1620299994647.1620214650759.1620299994647.0.0.0.3.2; _qzjc=1; _qzjto=1.1.0; _jzqb=1.1.10.1620299994.1; _qzjb=1.1620299994647.1.0.0.0; srcid=eyJ0Ijoie1wiZGF0YVwiOlwiNGE0Y2E5MmE5MTFiMjhjODMyNTIxMDdkM2VjMDU2NGQzY2I0ZGQzMDlhZDY2Y2MwY2FjZWJjOWVmNmY1NWRlYzIwNDYwZDY3ZmZiZTZmODM5Yzc3MWFmMzNkMmI0NDI5ZWFkMTFhYzY4YWU0Y2Q3ZTlhYWZhMzk4MTc0MjcwNTZiZTg3MTc1MWI5YWQzMDUxNzk4Y2MwZDJmMTA5YzgzOWMxZjUyZTVhMmI0NDVmYzNkN2NjNjI2NjZiYTRiYzI2YTZmNGNlMzViMTZkMTc3NTA4ZGE0YzkxMDAzZDkwYmIwNTM0NGU1OTY3OThlZWNiN2YyNjIxZjQ5YzRiOGY5NWY3Zjc5NWM2YzIzNmNkOGI0NjQ2ZWNmNjczNzk0MzBhZWRjODdjYjg4MWNkOWFjYjFhMWVkYTllOTc2NzYxMTgyZmU1MjljYjdlNWNiZmZjZDY5ZDA5YTEwZGM5OTcxNlwiLFwia2V5X2lkXCI6XCIxXCIsXCJzaWduXCI6XCJkMWZhZDhjYlwifSIsInIiOiJodHRwczovL3hhLmxpYW5qaWEuY29tL3p1ZmFuZy9wZzEvIiwib3MiOiJ3ZWIiLCJ2IjoiMC4xIn0='}# 发送网络请求try:resp = requests.get(url, headers = headers)except:print('something wrong!')

3. 分析网页,我们可以看到每一套房源的全部信息都在这个div里面,每页有30套房源信息,也就是有这样30个div。

所以我们的思路很简单,使用css先获取到这30的div的全部信息,再使用循环获取每一套房子里面的具体信息。

4.如下我们可以观察页面结构发现所有的房源div信息都在一个class名字为content__list的div内部。

所以我们先获取到所有的div

 divs = seletor.css('.content__list--item')  # 所有div标签

5.然后我们遍历所有的div获取其内部具体信息。

for d in divs:title = d.css('.content__list--item--title a::text').get().strip()  # 房子标题address = d.css('.content__list--item--des a::text').getall()address = '-'.join(address).strip()                                # 房子小区名称area = d.css('.content__list--item--des::text').getall()[4].strip()  # 房子面积toward = d.css('.content__list--item--des::text').getall()[5].strip()  # 房子朝向structure = d.css('.content__list--item--des::text').getall()[6].strip()  # 房子结构addinfo = d.css('.content__list--item--bottom i::text').getall()addinfo = '|'.join(addinfo)                                             # 房子其他信息maint = d.css('.content__list--item--time::text').get().strip()  # 房子维护详情price = d.css('.content__list--item-price em::text').get().strip() + '元/月' # 房子月租

6.然后我们将获取到的这些信息存入Excel方便后续pandas操作。

ws = op.Workbook()
wb = ws.create_sheet(index=0)wb.cell(row=1, column=1, value='标题')
wb.cell(row=1, column=2, value='小区名称')
wb.cell(row=1, column=3, value='面积')
wb.cell(row=1, column=4, value='朝向')
wb.cell(row=1, column=5, value='结构')
wb.cell(row=1, column=6, value='附加信息')
wb.cell(row=1, column=7, value='维护情况')
wb.cell(row=1, column=8, value='月租')
ws.save('西安租房信息.xlsx')

7.获取到的Excel信息如下:

8.然后我们定个小目标,先获取100页的数据。也就是3000条的房源信息。

接下来我们简单可视化一下西安各个区域房源情况,看看哪个区域房源多,房源多了选择自然就多了。那价格自然...你懂!

1.我们先使用pandas读取excel然后获取所有的房源所在位置:

pd_data = pd.read_excel(r'./西安租房信息.xlsx')    # 读取excel
address = pd_data['小区名称']                      # 获取所有地址

因为我们只需前两位房源所在区域并且要知道每个区域的所有房源总数。而、无需其他信息所以还需进一步优化。

#获取地址前两位为区域名称
address_01 = []
for i in address:address_01.append(i[0:2])
#统计
data = []
address_01_set = set(address_01)
for item in address_01_set:data.append((item, address_01.count(item)))#重新命名column
df = DataFrame(data)
df.columns = ('area', 'number')

接下来我们分别使用柱状图、饼图、折线图、漏斗图和仪表盘分别展示。

# 1、柱状图
def barPage() -> Bar:bar = (Bar().add_xaxis(x_data).add_yaxis("西安租房分布",y_data).set_global_opts(title_opts=opts.TitleOpts(title="Bar-西安租房分布图"),legend_opts=opts.LegendOpts(is_show=False),))return bar

将所有的可视化部分封装成函数展示出来。

page = (Page(layout=Page.DraggablePageLayout).add(barPage(),piePage(),linePage(),funnelPage(),gaugePage())
)page.render("page_demo.html")

一起来看看效果吧~~~

怎么样,比你在网页上一个一个查找强多了吧!比看Excel更加直观吧

租房哪里又便宜又好?python可视化爬虫告诉你!相关推荐

  1. python可视化爬虫框架_8个最高效的Python爬虫框架

    1.Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中..用这个框架可以轻松爬下来如亚马逊商品信息之类的 ...

  2. python可视化爬虫实现“京东试用”批量申请

    介绍: 环境:chromedriver 2.41.578700+ selenuim3.14.0 过程: 1.打开京东使用主页 2.登录京东 3.打开京东试用页面 4.获取商品列表 5.自动申请试用(该 ...

  3. python可视化来分析全国疫情

    很长一段时间在python下出图都是使用matplotlib,其好处就是应用比较广泛,文档很容易找,不过出的图微显丑陋.pyecharts 是百度的echarts基于python的实现,可以很方便的直 ...

  4. Python可视化——3D绘图解决方案pyecharts、matplotlib、openpyxl

    Python可视化--3D绘图解决方案pyecharts.matplotlib.openpyxl 1. pyecharts 2. matplotlib 3. openpyxl 这篇博客将介绍pytho ...

  5. python可视化案例书籍推荐_这5款Python可视化神器,总有一款适合你!

    我们都知道视觉是人们很重要的一种感官,而Python中可视化,在数据相关的研发中也起到"一木支危楼"的作用.如果从直接查看离线存储在各类数据库中杂乱无章的数据,会让人瞬间感到崩溃且 ...

  6. 面向小白的最全 Python 可视化教程,超全的!

    作者 | 俊欣 来源丨关于数据分析与可视化 今天小编总结归纳了若干个常用的可视化图表,并且通过调用plotly.matplotlib.altair.bokeh和seaborn等模块来分别绘制这些常用的 ...

  7. 10 个案例分享几个 Python 可视化小技巧,助你绘制高质量图表

    作者 | 俊欣 来源 | 关于数据分析与可视化 一般在Python当中,我们用于绘制图表的模块最基础的可能就是matplotlib了,今天小编分享几个用该模块进行可视化制作的技巧,帮助你绘制出更加高质 ...

  8. 强烈推荐一款Python可视化神器!

    参加 2019 Python开发者日,请扫码咨询 ↑↑↑ 翻译 | Lemon 来源 | Plotly 出品 | Python数据之道 (ID:PyDataRoad) Plotly Express 入 ...

  9. python可视化lassocv特征筛选之后的特征的相关性分析热力图

    python可视化lassocv特征筛选之后的特征的相关性分析热力图 目录 python可视化lassocv特征筛选之后的特征的相关性分析热力图 #lassocv模型

最新文章

  1. 51nod 1220 约数之和【莫比乌斯反演+杜教筛】
  2. 求解单源最短路径的几种算法
  3. 模拟出ios中流行的黑色背景底
  4. 网络营销——网络营销专员浅析网站快照更新要点
  5. 斯坦福大学机器学习相关网站——Andrew Ng
  6. 计算机会计报表管理,职称计算机考试用友财务教程:会计报表子系统的主要功能...
  7. APUE学习笔记-15章进程间通信
  8. STM32F4UCOSII移植
  9. 微博首席架构师杨卫华:新浪微博技术架构分析
  10. Elastic 配置 TLS 加密传输
  11. 《蔡康永的说话之道》读书笔记
  12. Nirvana-Nevermind
  13. 计网‖已知主机IP地址、子网掩码求网络地址
  14. $.ajax传递数组的两种方式
  15. 计算机休眠开启密码设定,怎么把电脑设定待机密码
  16. 爆火的ChatGPT接入微信教程——实现ChatGPT自动聊天
  17. 【傻瓜图文式】Win系统下制作U盘CLOVER引导+安装原版Mavericks10.9+安装问题总结
  18. 都市鸿蒙珠认主,都市之我能穿越洪荒
  19. 场效应管及其放大电路
  20. 原来,《心灵奇旅》竟是用VR制作的

热门文章

  1. 漏洞管理失败?企业漏洞管理面临的三大困境
  2. leetcode279——完全平方数——java实现
  3. 霍格沃兹软件测试管理与领导力提升必修课二期这门课具体讲什么呢?
  4. MFC富文本编辑框richedit插入图片ole对象问题
  5. python基于pygame的飞机大作战小游戏
  6. 上海市python培训机构
  7. PLC中ST编程的单按钮启停
  8. htmlcanvas2实现将网页生成图片,自定义保存图片的名称
  9. 上手快!!福利局!新手如何使用python爬虫爬取网页图片(使用正则进行数据解析)当然这个新手是我自己
  10. 制作频谱应用FFT心得