本人初学python是菜鸟级,写的不好勿喷。
python爬虫用了比较简单的urllib.parse和requests,把爬来的数据显示在地图上。接下里我们话不多说直接上代码:
1.安装python环境和编辑器(自行度娘)
2.本人以58品牌公寓为例,爬取在杭州地区价格在2000-4000的公寓。

#-*- coding:utf-8 -*-
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import requests
import csv
import time

以上是需要引入的模块

url = "http://hz.58.com/pinpaigongyu/pn/{page}/?minprice=2000_4000"
#已完成的页数序号,初时为0
page = 0

以上的全局变量

csv_file = open(r"c:\users\****\Desktop\houoseNew.csv","a+",newline='')
csv_writer = csv.writer(csv_file, delimiter=',')

自定义某个位置来保存爬取得数据,本人把爬取得数据保存为csv格式便于编辑(其中”a+”表示可以多次累加编辑在后面插入数据,建议不要使用“wb”哦!newline=”表示没有隔行)

while True:#为了防止网站屏蔽ip,设置了时间定时器每隔5秒爬一下。打完一局农药差不多都爬取过来了。time.sleep(5)page +=1#替换URL中page变量print (url.format(page=page)+"ok")response = requests.get(url.format(page=page))html=BeautifulSoup(response.text)#寻找html中DOM节点lihouse_list = html.select(".list > li")# 循环在读不到新的房源时结束if not house_list:breakfor house in house_list:#根据hml的DOM节点获取自己需要的数据house_title = house.select("h2")[0].stringhouse_url = urljoin(url, house.select("a")[0]["href"])house_pic = urljoin(url, house.select("img")[0]["lazy_src"])house_info_list = house_title.split()# 如果第一列是公寓名 则取第二列作为地址if "公寓" in house_info_list[0] or "青年社区" in house_info_list[0]:house_location = house_info_list[0]else:house_location = house_info_list[1]house_money = house.select(".money")[0].select("b")[0].stringcsv_writer.writerow([house_title, house_location, house_money,house_pic ,house_url])#最后不要忘记关闭节流csv_file.close()

如果网站屏蔽了你的ip,你可以做一个ip地址数组放在http的头部具体度娘一下吧。

接下来我们写html
只是简单的写了一下写的不好见谅。用的是高德地图,具体的js api可以到高德开发者上去看。

<body>
<div id="container"></div>
<div class="control-panel"><div class="control-entry"><label>选择工作地点:</label><div class="control-input"><input id="work-location" type="text"></div></div><div class="control-entry"><label>选择通勤方式:</label><div class="control-input"><input type="radio" name="vehicle" value="SUBWAY,BUS" onClick="takeBus(this)" checked/> 公交+地铁<input type="radio" name="vehicle" value="SUBWAY" onClick="takeSubway(this)"/> 地铁<input type="radio" name="vehicle" value="WALK" onClick="takeWalk(this)"/> 走路<input type="radio" name="vehicle" value="BIKE" onClick="takeBike(this)"/> 骑车</div></div><div class="control-entry"><label>导入房源文件:</label><div class="control-input"><input type="file" name="file" id="fileCsv"/><button style="margin-top: 10px;width: 50%;" onclick="changeCsv()">开始</button></div></div>
</div>
<div id="transfer-panel"></div>
<script>var map = new AMap.Map("container", {resizeEnable: true,zoomEnable: true,center: [120.1256856402492, 30.27289264553506],zoom: 12});//添加标尺var scale = new AMap.Scale();map.addControl(scale);//公交到达圈对象var arrivalRange = new AMap.ArrivalRange();//经度,纬度,时间(用不到),通勤方式(默认是地铁+公交+走路+骑车)var x, y, t, vehicle = "SUBWAY,BUS";//工作地点,工作标记var workAddress, workMarker;//房源标记队列var rentMarkerArray = [];//多边形队列,存储公交到达的计算结果var polygonArray = [];//路径规划var amapTransfer;//信息窗体对象var infoWindow = new AMap.InfoWindow({offset: new AMap.Pixel(0, -30)});//地址补完的使用var auto = new AMap.Autocomplete({//通过id指定输入元素input: "work-location"});//添加事件监听,在选择补完的地址后调用workLocationSelectedAMap.event.addListener(auto, "select", workLocationSelected);function takeBus(radio) {vehicle = radio.value;loadWorkLocation()}function takeSubway(radio) {vehicle = radio.value;loadWorkLocation()}function takeWalk(radio){vehicle = radio.value;loadWorkLocation()}function takeBike(radio) {vehicle = radio.value;loadWorkLocation()}//获取加载的文件function changeCsv() {$("#fileCsv").csv2arr(function (res) {$.each(res, function (k, p) {if (res[k][1]) {//addMarkerByAddress(地址,价格,展示的图片)addMarkerByAddress(res[k][1], res[k][2],res[k][3])}})});}function workLocationSelected(e) {workAddress = e.poi.name;loadWorkLocation();}function loadWorkMarker(x, y, locationName) {workMarker = new AMap.Marker({map: map,title: locationName,icon: 'http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png',position: [x, y]});}function loadWorkRange(x, y, t, color, v) {arrivalRange.search([x, y], t, function (status, result) {if (result.bounds) {for (var i = 0; i < result.bounds.length; i++) {//新建多边形对象var polygon = new AMap.Polygon({map: map,fillColor: color,fillOpacity: "0.4",strokeColor: color,strokeOpacity: "0.8",strokeWeight: 1});//得到到达圈的多边形路径polygon.setPath(result.bounds[i]);polygonArray.push(polygon);}}}, {policy: v});}function addMarkerByAddress(address, money,imgUrl) {var geocoder = new AMap.Geocoder({city: "杭州",radius: 1000});geocoder.getLocation(address, function (status, result) {var iconValue = "";var _money=money;if (money.indexOf("-") > -1) {_money = money.split("-")[1];}//如果价格高于3000元/月在地图上显示红色,低于的话显示蓝色if (parseFloat(_money) > 3000) {iconValue="http://webapi.amap.com/theme/v1.3/markers/n/mark_r.png";}else{iconValue = "http://webapi.amap.com/theme/v1.3/markers/n/mark_b.png";}if (status === "complete" && result.info === 'OK') {var geocode = result.geocodes[0];rentMarker = new AMap.Marker({map: map,title: address,icon:iconValue,animation:"AMAP_ANIMATION_DROP",position: [geocode.location.getLng(), geocode.location.getLat()]});rentMarkerArray.push(rentMarker);//鼠标点击标记显示相应的内容rentMarker.content = "<img src='"+imgUrl+"'/><div>房源:<a target = '_blank' href='http://bj.58.com/pinpaigongyu/?key=" + address + "'>" + address + "</a><p>价格:"+money+"</p><div>"rentMarker.on('click', function (e) {infoWindow.setContent(e.target.content);infoWindow.open(map, e.target.getPosition());if (amapTransfer) amapTransfer.clear();amapTransfer = new AMap.Transfer({map: map,policy: AMap.TransferPolicy.LEAST_TIME,city: "杭州市",panel: 'transfer-panel'});amapTransfer.search([{keyword: workAddress}, {keyword: address}], function (status, result) {})});}})}function delWorkLocation() {if (polygonArray) map.remove(polygonArray);if (workMarker) map.remove(workMarker);polygonArray = [];}function delRentLocation() {if (rentMarkerArray) map.remove(rentMarkerArray);rentMarkerArray = [];}function loadWorkLocation() {//首先清空地图上已有的到达圈delWorkLocation();var geocoder = new AMap.Geocoder({city: "杭州",radius: 1000});geocoder.getLocation(workAddress, function (status, result) {if (status === "complete" && result.info === 'OK') {var geocode = result.geocodes[0];x = geocode.location.getLng();y = geocode.location.getLat();//加载工作地点标记loadWorkMarker(x, y);//加载60分钟内工作地点到达圈loadWorkRange(x, y, 60, "#3f67a5", vehicle);//地图移动到工作地点的位置map.setZoomAndCenter(12, [x, y]);}})}
</script>
</body>

想要获取完整的代码github:https://github.com/DIVIBEAR/pythonDemo.git
新手上路,老司机们勿喷!

python爬虫租房信息在地图上显示相关推荐

  1. python百度地图和租房信息_python爬虫租房信息在地图上显示的方法

    选择工作地点: 选择通勤方式: 公交+地铁 地铁 走路 骑车 导入房源文件: 开始 var map = new AMap.Map("container", { resizeEnab ...

  2. python爬虫--租房信息

    对小猪住房网站的信息爬取 一.准备 二.爬取的内容明细 三.这里直接写代码 四.输出结果 一.准备 谷歌浏览器打开 http://bj.xiaozhu.com/fangzi/37609773603.h ...

  3. Python爬虫,爬取51job上有关大数据的招聘信息

    Python爬虫,爬取51job上有关大数据的招聘信息 爬虫初学者,练手实战 最近在上数据收集课,分享一些代码. 分析所要爬取的网址 https://search.51job.com/list/000 ...

  4. 谷歌付费 php是什么区,谷歌地图上显示地区的详细信息

    谷歌地图上显示地区的详细信息 最近在做有关谷歌地图的项目,需要鼠标放到在谷歌地图上标注的地点的详细信息(即当鼠标放上去时弹出显示该地区的详细信息) var map; // Global declara ...

  5. Python根据经纬度在地图上显示(folium)

    Python根据经纬度在地图上显示(folium) 一.folium介绍 1.folium.Map参数简要介绍 2.folium.Marker参数介绍 二.Python根据经纬度在地图上显示(示例) ...

  6. python 地址_如何用用Python将地址标记在地图上

    本文就将讲解,给你一个地址,如何用Python进行可视化,只需要两步: 将地址转成经纬度 根据经纬度在地图上标记点 一.将地址转成经纬度 首先我们需要将地理位置转成经纬度这种统一格式,方便代码去识别. ...

  7. 在谷歌地图上显示您的位置

    HTML5 Geolocation(地理定位)用于定位用户的位置. 亲自试一试:在谷歌地图上显示您的位置 定位用户的位置 www.binblog.cn HTML5 Geolocation API 用于 ...

  8. html5获取我的位置并在百度地图上显示

    html5获取我的位置并在百度地图上显示 一.前言 二.在线演示和GitHub源码 一.前言 最近有兴趣研究了下移动端的地图api,发现其实挺简单的,HTML5也提供了地理位置API:Geolocat ...

  9. 门店定位怎么在地图上显示_怎样让自己的店地理位置显示在高德地图上

    展开全部 高德地图软件中进行新增地点提交,数据审核32313133353236313431303231363533e78988e69d8331333365666163后会尽快在地图上标注.目前不是所有 ...

最新文章

  1. Winform中使用FastReport的DesignReport时怎样给通过代码Table添加数据
  2. 安装linux系统选择重新分区会怎么样,弱弱的问一下 双系统安装中linux如何分区?分区太多会不会不好?...
  3. P6800-[模板]Chirp Z-Transform【NTT】
  4. 服务器怎么用光驱装系统教程,使用光驱重装系统详细教程
  5. ASP.NET Core 2加入了Razor页面特性
  6. 解决 maps to localhost, but this does not map back to the address
  7. 蜘蛛侠3.1(无错版)站群分享源码 带视频,关键字软件安装使用教程
  8. 在matlab下实现TDOA定位算法性能仿真
  9. 最长单调递增子序列及思维题——动态规划
  10. 拦截mysql执行计划数据_MySQL执行计划详解
  11. chrome最新版本下载
  12. 计算机工程ei是不是不检索了,EI检索的期刊一定是EI吗
  13. 在html中打字如何变大,如何把字体放大 如何更改桌面与网页字体大小-电脑教程...
  14. SAP ABAP APO计划订单生产日期调整
  15. APP平台是怎样实现视频加密呢?
  16. 混沌与分形(一):谢尔宾斯基三角形与门格海绵
  17. 《Hidden Markov Map Matching Through Noise and Sparseness》读书笔记
  18. 高德获取ip地理位置
  19. 跳台阶算法的三种实现方案(PHP)
  20. Markdown使用手册【基础篇】

热门文章

  1. 视频会议/远程医疗/在线教育网页视频实时音视频通话目前有什么优势和不足?
  2. NRE论文总结:Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification
  3. 恶意网页病毒十三大症状及修复方法
  4. EP4CE6F17C8的Location布线资源及其命名方式
  5. pypy3与python多线程比较
  6. aria-expanded
  7. java中属于高级事件的有,(盘点)计算机等级考试题库,二级Java试题
  8. 二进制转化为十进制算法原理
  9. 通过异常处理错误(6):异常匹配、其他
  10. 计算机amibios设置教程,技术编辑给你传授win7系统ami主板bios设置u盘启动的思路...