租房问题一直是在外奋斗的人很头疼的问题,尤其对于刚毕业出校的大学生,如何在价格、舒适、上班距离等各方面因素中选择一个最适合自己的答案。之前以深圳为例,发过深圳租房简明分析,但在适用性方面还存在很多问题,在知乎上看到有分享高德api和python解决租房问题,因此记录下来,方便更多人学习,项目课地址:高德API+Python解决租房问题。
整体项目主要分为两部分,即使用python抓取租房数据和使用高德api及数据可视化查看租房信息。
一.python 代码
python代码使用了beautifulsoup、requests、csv库,最终会在本地生成rent.csv文件,保存抓取到的租房数据。
#-*- coding:utf-8 -*-
from bs4 import BeautifulSoup
from urlparse import urljoin
import requests
import csv
#深圳租房信息地址,价格区间1000-4000,数据来源58品牌公寓
url = "http://sz.58.com/pinpaigongyu/pn/{page}/?minprice=1000_4000"
#已完成的页数序号,初时为0
page = 0
#保存文件
csv_file = open("rent.csv","wb")
csv_writer = csv.writer(csv_file, delimiter=',')
while True:
page += 1
print "fetch: ", url.format(page=page)
response = requests.get(url.format(page=page))
html = BeautifulSoup(response.text)
house_list = html.select(".list > li")
# 循环在读不到新的房源时结束
if not house_list:
break
for house in house_list:
house_title = house.select("h2")[0].string.encode("utf8")
house_url = urljoin(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]
house_money = house.select(".money")[0].select("b")[0].string.encode("utf8")
csv_writer.writerow([house_title, house_location, house_money, house_url])
csv_file.close()
二.html及js代码
index.html代码如下,通过调用高德api生成地图,在窗体上添加一个选择框体。
<html>
<head>
<meta charset="utf-8">
<meta http-equiv=