Python:利用高德地图API实现找房

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

1、摘要:

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

2、最终的结果图:

 

Python:利用高德地图API实现找房_第1张图片

3、实现流程图:

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

Python:利用高德地图API实现找房_第2张图片

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

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

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

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

4、爬取房源实现

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

Python:利用高德地图API实现找房_第3张图片

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

Python:利用高德地图API实现找房_第4张图片

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

  Python:利用高德地图API实现找房_第5张图片          Python:利用高德地图API实现找房_第6张图片

 

5、调用高德地图API:

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

Python:利用高德地图API实现找房_第7张图片

Python:利用高德地图API实现找房_第8张图片

Python:利用高德地图API实现找房_第9张图片

Python:利用高德地图API实现找房_第10张图片

完整代码:




    
    
    
    毕业生租房
    
    
    
    
    
    
    



    
公交+地铁 地铁

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

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

Python:利用高德地图API实现找房_第11张图片

Python:利用高德地图API实现找房_第12张图片

你可能感兴趣的:(python)