最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文教你利用Python租到最合適的房子

 更新時(shí)間:2022年09月14日 09:43:56   作者:派森醬  
這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言在爬取到房源數(shù)據(jù)后,挑選出符合自己要求的房子呢?感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

前言

書(shū)接上回,在前陣子的一篇文章(為了在上海租房,我用python連夜爬了20000多條房源信息)中,我們用python獲取到了上海地區(qū)某平臺(tái)的2w多條房源數(shù)據(jù)。

但上篇文章中只做了簡(jiǎn)單的篩選,這只是第一步,接下來(lái),我們應(yīng)當(dāng)如何從這些數(shù)據(jù)中挑選出符合自己要求的房子呢?

為了確保換房后我和女友前往各自上班地點(diǎn)的通勤時(shí)間都在可接受范圍內(nèi),我需要知道從各處房源位置前往兩家公司所需的時(shí)間。為了獲取這些信息,我們需要借助高德地圖api這個(gè)工具。

使用高德api,我們能夠輕松地根據(jù)地址或名稱獲取到地址對(duì)應(yīng)的坐標(biāo)位置,進(jìn)而獲取到對(duì)應(yīng)地點(diǎn)的通勤和周邊信息,十分的方便。

在使用api之前,我們首先需要獲取到自己的Key值。進(jìn)入高德開(kāi)放平臺(tái)網(wǎng)站,完成個(gè)人開(kāi)發(fā)者注冊(cè)和zfb實(shí)名認(rèn)證后,點(diǎn)擊控制臺(tái)→應(yīng)用管理→我的應(yīng)用→創(chuàng)建新應(yīng)用,來(lái)完成應(yīng)用的創(chuàng)建。

之后點(diǎn)擊右上角的添加,來(lái)為自己創(chuàng)建一個(gè)Key,注意這里服務(wù)平臺(tái)要選擇Web服務(wù),不同選項(xiàng)對(duì)應(yīng)的服務(wù)范圍是不同的。

創(chuàng)建key值之后,就可以開(kāi)始使用api獲取數(shù)據(jù)了。

首先我們要根據(jù)地點(diǎn)名稱得到對(duì)應(yīng)的坐標(biāo)值,然后用出發(fā)地和目的地的坐標(biāo)調(diào)用接口,得到兩個(gè)位置之間的通勤時(shí)間。

思路理清之后,就到了操作時(shí)間了。

獲取房源坐標(biāo)

因?yàn)榭偟姆吭磾?shù)量太大,所以我們可以用小區(qū)的坐標(biāo)位置代替房源的具體位置進(jìn)行調(diào)用,這樣需要進(jìn)行的處理量就大大減小了,可以節(jié)省一些不必要的成本。

因此首先我們對(duì)上篇文章中獲取到的數(shù)據(jù)做一個(gè)簡(jiǎn)單的處理,利用set對(duì)小區(qū)名做一個(gè)去重。

csv_read=pd.read_csv('../document/sh.csv',header=None)
village_set?=?set(csv_read[2])
village_list?=?list(village_set)

獲取到小區(qū)列表后,我們嘗試調(diào)用一下獲取坐標(biāo)的API。

#?高德API的URL
geourl?=?'https://restapi.amap.com/v3/geocode/geo'??

#?地址前要加地區(qū)名,否則可能定位到其他城市
params?=?{'key':'在這里填入個(gè)人的Key值',
????????'address':?'上海市國(guó)金中心'}
#?發(fā)送請(qǐng)求????????????????
res?=?requests.get(geourl,?params)
jd?=?json.loads(res.text)
#?返回值的具體格式可以在API文檔中查看
geopoint_1?=?jd['geocodes'][0]['location']

print(geopoint_1)
#?121.502021,31.236814

調(diào)用成功之后,我們就可以用相同的方法,獲取到列表中所有小區(qū)的坐標(biāo)。

獲取路程時(shí)間

在得到各個(gè)小區(qū)的坐標(biāo)位置之后,我們就可以調(diào)用api獲取兩個(gè)坐標(biāo)之間的路程時(shí)間了。

舉個(gè)例子,如果我需要獲取兩個(gè)坐標(biāo)之間的公交地鐵通勤時(shí)間,可以用如下的方法:

#?高德API的URL
puburl?=?'https://restapi.amap.com/v3/direction/transit/integrated?origin={}&destination={}&key={}&time=9:00&city=上海'??

#?發(fā)送請(qǐng)求??
r=requests.get(puburl.format(geopoint_1,?geopoint_vill,?'在這里填入個(gè)人的Key值'))??
r=r.text??
jsonData=json.loads(r)
#?獲取步行距離
publength?=?round(int(jsonData['route']['transits'][0]['walking_distance'])/1000,?2)
#?獲取總時(shí)間
pubtime?=?round(int(jsonData['route']['transits'][0]['duration'])/60)

這里一般會(huì)獲取到多條路線,不過(guò)因?yàn)榈谝粭l路線通常是用時(shí)最短的,所以這里就以第一條路線的數(shù)據(jù)為代表。

用類似的方法,通過(guò)使用不同的url,就能獲取到駕車、步行等方式的路程時(shí)間。不過(guò)要注意不同的這些api的輸入和輸出參數(shù)是有一定區(qū)別的,具體的要參照文檔。

完整代碼

import?pandas?as?pd
import?requests
import?json
import?csv
import?codecs

#?創(chuàng)建導(dǎo)出文件
with?open(r'..\document\village.csv',?'wb+')as?fp:
????fp.write(codecs.BOM_UTF8)
f?=?open(r'..\document\village.csv','w+',newline='',?encoding='utf-8')
writer?=?csv.writer(f)
writer.writerow(("小區(qū)名",?"坐標(biāo)",?"步行距離-地點(diǎn)1","通勤時(shí)間-地點(diǎn)1",?"步行距離-地點(diǎn)2","通勤時(shí)間-地點(diǎn)2"))

geourl?=?'https://restapi.amap.com/v3/geocode/geo'??
puburl?=?'https://restapi.amap.com/v3/direction/transit/integrated?origin={}&destination={}&key={}&time=9:00&city=上海'??

#?讀取文件
csv_read=pd.read_csv('../document/sh.csv',header=None)
village_set?=?set(csv_read[2])
village_list?=?list(village_set)

#?獲取第一個(gè)坐標(biāo)
geourl?=?'https://restapi.amap.com/v3/geocode/geo'??
#?地址前要加地區(qū)名,否則可能定位到其他城市
params?=?{'key':'在這里填入個(gè)人的Key值',
????????'address':?'上海市國(guó)金中心'}
#?發(fā)送請(qǐng)求????????????????
res?=?requests.get(geourl,?params)
jd?=?json.loads(res.text)
#?返回值的具體格式可以在API文檔中查看
geopoint_1?=?jd['geocodes'][0]['location']

#?獲取第二個(gè)坐標(biāo)
params?=?{'key':'在這里填入個(gè)人的Key值',
????????'address':?'上海市國(guó)正中心'}???????????????
res?=?requests.get(geourl,?params)
jd?=?json.loads(res.text)
geopoint_2?=?jd['geocodes'][0]['location']

for?adr?in?village_list:
????#?獲取小區(qū)坐標(biāo)
????params?=?{'key':'在這里填入個(gè)人的Key值',
????????'address':?'上海市'+adr}????????????????
????res?=?requests.get(geourl,?params)
????jd?=?json.loads(res.text)
????geopoint?=?jd['geocodes'][0]['location']

????#?獲取第一個(gè)位置的信息
????r=requests.get(puburl.format(geopoint_1,?geopoint,?'在這里填入個(gè)人的Key值'))??
????r=r.text??
????jsonData=json.loads(r)
????publength_1?=?round(int(jsonData['route']['transits'][0]['walking_distance'])/1000,?2)
????pubtime_1?=?round(int(jsonData['route']['transits'][0]['duration'])/60)??

????#?獲取第二個(gè)位置的信息
????r=requests.get(puburl.format(geopoint_2,?geopoint,?'在這里填入個(gè)人的Key值'))??
????r=r.text??
????jsonData=json.loads(r)
????publength_2?=?round(int(jsonData['route']['transits'][0]['walking_distance'])/1000,?2)
????pubtime_2?=?round(int(jsonData['route']['transits'][0]['duration'])/60)??

????writer.writerow((adr,?geopoint,?publength_1,?pubtime_1,?publength_2,?pubtime_2))

f.close()

將腳本執(zhí)行后,就能獲得各個(gè)小區(qū)距離目標(biāo)地點(diǎn)的路程時(shí)間。后面再經(jīng)過(guò)一些簡(jiǎn)單的篩選,就能大大縮小找房的選擇范圍了。

高德API還有很多其他的功能,比如POI周邊搜索可以查詢小區(qū)周邊指定范圍內(nèi)(比如方圓1公里)是否有便利店,健身房等設(shè)施,結(jié)合前端組件還可以在地圖中顯示出指定的位置,合理運(yùn)用這些功能,能夠?qū)崿F(xiàn)更多的個(gè)性化需求,文中只用了很小一部分,大伙可以參照API文檔自行嘗試。

不過(guò)也要注意一點(diǎn),對(duì)于個(gè)人開(kāi)發(fā)者而言,高德API每日的調(diào)用次數(shù)是有限制的,為了避免超額,大家在爬取數(shù)據(jù)的時(shí)候可以根據(jù)實(shí)際情況適度縮小范圍,減少處理的數(shù)據(jù)量。

到此這篇關(guān)于一文教你利用Python租到最合適的房子的文章就介紹到這了,更多相關(guān)Python租房?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的map()函數(shù)和reduce()函數(shù)的用法

    Python中的map()函數(shù)和reduce()函數(shù)的用法

    這篇文章主要介紹了Python中的map()函數(shù)和reduce()函數(shù)的用法,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • 一步步教你用python給女朋友寫(xiě)個(gè)微信自動(dòng)提醒的程序

    一步步教你用python給女朋友寫(xiě)個(gè)微信自動(dòng)提醒的程序

    如今微信已成為我們?nèi)粘I畹闹饕涣鞴ぞ?但是微信自身的功能有時(shí)候可能并不能滿足我們的需要,因此我們會(huì)想是否可以進(jìn)行微信功能的拓展呢,這篇文章主要給大家介紹了關(guān)于利用python給女朋友寫(xiě)了個(gè)微信自動(dòng)提醒程序的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Flask框架編寫(xiě)文件下載接口過(guò)程講解

    Flask框架編寫(xiě)文件下載接口過(guò)程講解

    這篇文章主要介紹了Flask框架編寫(xiě)文件下載接口的過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • Python使用OpenPyXL處理Excel表格

    Python使用OpenPyXL處理Excel表格

    這篇文章主要介紹了Python使用OpenPyXL處理Excel表格,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Pycharm遠(yuǎn)程調(diào)試openstack的方法

    Pycharm遠(yuǎn)程調(diào)試openstack的方法

    這篇文章主要為大家詳細(xì)介紹了Pycharm遠(yuǎn)程調(diào)試openstack的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 使用python進(jìn)行文件處理的庫(kù)存管理

    使用python進(jìn)行文件處理的庫(kù)存管理

    庫(kù)存管理是任何處理實(shí)物商品的企業(yè)的一個(gè)重要方面,Python?提供了各種庫(kù)來(lái)讀取和寫(xiě)入文件,使其成為管理庫(kù)存的絕佳選擇,它允許我們使用?Python?等編程語(yǔ)言來(lái)操作計(jì)算機(jī)文件系統(tǒng)上的文件,在本文中,我們將探討如何使用文件處理在?Tkinter?中實(shí)現(xiàn)庫(kù)存管理系統(tǒng)
    2023-09-09
  • Pytorch學(xué)習(xí)筆記DCGAN極簡(jiǎn)入門(mén)教程

    Pytorch學(xué)習(xí)筆記DCGAN極簡(jiǎn)入門(mén)教程

    網(wǎng)上GAN的教程太多了,這邊也談一下自己的理解,本文給大家介紹一下GAN的兩部分組成,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • Tensorflow實(shí)現(xiàn)部分參數(shù)梯度更新操作

    Tensorflow實(shí)現(xiàn)部分參數(shù)梯度更新操作

    今天小編就為大家分享一篇Tensorflow實(shí)現(xiàn)部分參數(shù)梯度更新操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 詳解如何通過(guò)Python實(shí)現(xiàn)批量數(shù)據(jù)提取

    詳解如何通過(guò)Python實(shí)現(xiàn)批量數(shù)據(jù)提取

    每天面對(duì)成堆的發(fā)票,無(wú)論是發(fā)票還是承兌單據(jù),抑或是其他各類公司數(shù)據(jù)要從照片、PDF等不同格式的內(nèi)容中提取,我們都有必要進(jìn)行快速辦公的能力提升。本文就教你如何利用Python實(shí)現(xiàn)批量數(shù)據(jù)提取吧
    2023-03-03
  • python退出命令是什么?詳解python退出方法

    python退出命令是什么?詳解python退出方法

    在本篇內(nèi)容中我們給學(xué)習(xí)python編程的朋友們整理了關(guān)于python退出的命令和方法,需要的學(xué)習(xí)下。
    2018-12-12

最新評(píng)論

津市市| 石河子市| 乌兰县| 凤阳县| 鲁山县| 宝丰县| 兰考县| 大同市| 萨嘎县| 尼勒克县| 股票| 桐梓县| 上思县| 永吉县| 纳雍县| 准格尔旗| 吉木萨尔县| 永福县| 浙江省| 和田县| 长汀县| 尼木县| 浏阳市| 土默特左旗| 外汇| 无棣县| 临潭县| 应城市| 东乡族自治县| 墨竹工卡县| 腾冲县| 望江县| 炎陵县| 永德县| 台东县| 林西县| 怀集县| 昭通市| 吴忠市| 图木舒克市| 兴宁市|