记:本项目是在实验楼上看到的,但是上面的代码由于没有及时维护,爬虫文件的代码不再能完整的把所有房源信息爬取下来,我根据最新的58同城官网进行了研究,现在的官网的房源信息已经不是分页的了,而是拉到最后自动进行加载,所以一些地方的代码也需要做一些修改。其次是爬取出来的文件在偶数行是空行的问题也得到了解决,在打开文件的时候添加一个参数即可。目前未解决的问题时字体加密问题,于是我删掉了money参数,仅供参考,后期有时间再研究字体加密怎么解决。希望得到大佬的在线指教。。。

1、摘要:

利用一些开放平台的API可以很方便的进行编程,早在考研时期就面临找房困难、房源信息混乱以及不清楚房源周边的交通情况。近期在跟廖雪峰老师学习python的过程中看到有类似的项目,在学习了该项目之后,也想把郑州的房源根据价格区间爬取出房源信息存储到csv文件中,然后利用高德地图的API接口进行位置上的标识和交通路线的规划。

2、最终的结果图:

3、实现流程图:

本项目主要有三个文件,分别是:crawl.py、rent2.csv、index.html。其中用到的几个API文档为:高德地图JavaScript API帮助文档和示例中心、Requests:Http for Humans、Beautiful Soup 4.2.0文档。

crawl.py:爬虫脚本,用来爬取房源信息

Rent2.csv:由crawl.py生成的房源信息文件

Index.html:地图显示房源和路径规划文件

要爬取的房源网站:https://zz.58.com/pinpaigongyu

4、爬取房源实现

(1)分析要爬取的页面发现网站路径规律应该为:/pinpaigongyu/?minprice={min_price}_{max_price},因为现在的58网站没有分页设置,直接是拉到最后自动进行加载,所以去掉了分页参数。

(2)找到房源信息列表,以list元素为标记,循环访问list元素里每一个li元素中的房源信息,提取出有效的房源信息。

(3)编写爬虫脚本文件:由于运行脚本文件后,爬取的时间间隔较小,原房源网站会弹出确认窗口,此时按规定进行确认,之后再重新进行爬取。

from bs4 import BeautifulSoup

import requests

import csv

import time

import lxml

url = "https://zz.58.com/pinpaigongyu/?minprice=1000_2000"

csv_file = open("rent2.csv","w",newline="",encoding='utf-8')

csv_writer = csv.writer(csv_file, delimiter=',')

while True:

print("fetch: ", url)

time.sleep(2)

response = requests.get(url)

html = BeautifulSoup(response.text,features="lxml")

house_list = html.select(".list > li")

# 循环在读不到新的房源时结束

if not house_list:

break

for house in house_list:

house_title = house.select("h2")[0].string.strip()

house_url = house.select("a")[0]["href"]

house_info_list = house_title.split()

# 如果第二列是公寓名则取第一列作为地址

if "公寓" in house_info_list[1] or "青年社区" in house_info_list[1]:

house_location = house_info_list[0]

else:

house_location = house_info_list[1]

csv_writer.writerow([house_title, house_location, house_url])

csv_file.close()

          

5、调用高德地图API:

直接在高德地图API示例中心把要用的地图的前端框架复制下来,在根据示例和手册对API中的方法进行调用,在这里主要是阅读高德地图的示例和参考手册。在使用高德地图的API之前需要先拥有一个key,在加载地图的时候使用。

完整代码:

毕业生租房

选择工作地点:

选择通勤方式:

公交+地铁

地铁

导入房源文件:

6、项目演示步骤和效果:

在终端输入python -m http.server 3000启动服务器,然后在浏览器输入http://localhost:3000查看效果,在右上角的panel中输入工作地点,交通方式,房源信息文件查看效果。

python调用高德地图api 可视化_Python:利用高德地图API实现找房相关推荐

  1. python分析成都房租信息,以及利用高德API查找租房

    python分析成都租房信息,以及利用高德API查找租房 使用的技术 效果 爬虫 需要爬取的网页分析 爬虫源码 数据可视化 利用高德API查找租房 github地址 使用的技术 爬虫:Beautifu ...

  2. python调用高德地图api 可视化_Python调用高德地图API实现经纬度换算、地图可视化...

    前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出的轻量级可视化平台上实现一键式地图可视化,这其中需要申请密 ...

  3. python高德地图api调用实例_Python 利用高德地图api实现经纬度与地址的批量转换...

    我们都知道,可以使用高德地图api实现经纬度与地址的转换.那么,当我们有很多个地址与经纬度,需要批量转换的时候,应该怎么办呢? 在这里,选用高德Web服务的API,其中的地址/逆地址编码,可以实现经纬 ...

  4. python的api库_python 利用toapi库自动生成api

    在学习做接口测试自动化的时候,我们往往会自己动手写一些简单的API,比如写一个简单的TODO API之类. 不过自己写API的时候经常需要造一些假数据,以及处理分页逻辑,开始的时候还觉得比较有意思,但 ...

  5. python调用第三方接口获取数据_python调用接口,python接收post请求接口(附完整代码)...

    与Scala语言相比,Python有其独特的优势和广泛的应用,python调用接口,因此Spark也推出了PySpark,它在框架上提供了一个使用Python语言的接口,python接收post请求接 ...

  6. python调用第三方接口获取数据_python 接口实现 供第三方调用的例子

    python 接口实现 供第三方调用的例子 实验环境 1.环境问题 python 2.7 以上自带的pyunit bottle 作为一个python的简易服务器 在python安装目录 打开命令窗口( ...

  7. python 根据地址求经纬度 谷歌_利用google的API获取世界城市经纬度(python实现)

    google API 需要 --. #-*- coding: utf8 -*- from xml.dom import minidom import urllib2, urllib #这个KEY本来是 ...

  8. 课程设计python调用摄像头_教你如何利用python调用摄像头

    导读 这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.打开摄像头 import cv2 import numpy as np de ...

  9. python调用oracle过程 权限不足_Python连接Oracle的一些坑以及出现原因和解决方法...

    前两天公司需要, 我用Python通过Oracle客户端instanceclient对接Oracle,遇到了一些问题: 提前一个小问题: Python连接Oracle需要一个第三方库:cx_Oracl ...

最新文章

  1. 微软资深算法工程师为AI初学者量身打造的机器学习入门书上市啦!
  2. Mysql中S 锁和 X 锁的区别
  3. 网站停办了 服务器有备份吗,网站在服务器上四种备份方法
  4. fastjson 输出null值字段
  5. webshell下执行CMD的小技巧
  6. 与java线程有关的,线程多少和什么有关?大神们表示有话要说!
  7. editplus public class自动补齐大括号问题破解
  8. C#串口操作实际应用开发详解
  9. 淘宝APP购物车测试用例
  10. 高数 | 【一元函数积分学】常用积分公式表
  11. noi 1.5第38题 计算多项式的导数
  12. 简单通用文章系统后台管理模板
  13. mysql中的mod_MySQL MOD()用法及代碼示例
  14. python中跳过本次循环的语句是_Python跳过for循环
  15. 免费期刊下载——超星发现
  16. 从阵容再到内容,跨年晚会们重寻“流量密码”
  17. MySQL转账储存过程_mysql中用存储过程实现转账过程
  18. 简单几步骤,裁剪多个视频画面大小
  19. Ceph部署(二)RGW搭建
  20. 在微型计算机中的helua,农产品声学特性及其在品质无损检测中的应用

热门文章

  1. 飞鸽传书:HTML界面也有它欠缺的方面
  2. Symbian和C++ SDK开发入门之应用程序
  3. 职场好人缘的26个细节
  4. 从月薪2300女工到年薪70万谷歌程序员:人生,永远不要给自己设限
  5. 没人性!让我们这么早来上班
  6. HTML5新特征、窍门和技术(16~20)
  7. linux6.5能安装的firefox,Centos6.5安装firefox
  8. 极光推送 java api_JPush极光推送Java服务器端API
  9. NOI数据结构:最小树形图
  10. 第31课 3721数-2021.10.30 《小学生C++趣味编程》