欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

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

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

之后點擊右上角的添加,來為自己創(chuàng)建一個Key,注意這里服務平臺要選擇Web服務,不同選項對應的服務范圍是不同的。

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

首先我們要根據(jù)地點名稱得到對應的坐標值,然后用出發(fā)地和目的地的坐標調用接口,得到兩個位置之間的通勤時間。

思路理清之后,就到了操作時間了。

獲取房源坐標

因為總的房源數(shù)量太大,所以我們可以用小區(qū)的坐標位置代替房源的具體位置進行調用,這樣需要進行的處理量就大大減小了,可以節(jié)省一些不必要的成本。

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

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

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

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

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

print(geopoint_1)
#?121.502021,31.236814

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

獲取路程時間

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

舉個例子,如果我需要獲取兩個坐標之間的公交地鐵通勤時間,可以用如下的方法:

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

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

這里一般會獲取到多條路線,不過因為第一條路線通常是用時最短的,所以這里就以第一條路線的數(shù)據(jù)為代表。

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

完整代碼

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

#?創(chuàng)建導出文件
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ū)名",?"坐標",?"步行距離-地點1","通勤時間-地點1",?"步行距離-地點2","通勤時間-地點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)

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

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

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

????#?獲取第一個位置的信息
????r=requests.get(puburl.format(geopoint_1,?geopoint,?'在這里填入個人的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)??

????#?獲取第二個位置的信息
????r=requests.get(puburl.format(geopoint_2,?geopoint,?'在這里填入個人的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í)行后,就能獲得各個小區(qū)距離目標地點的路程時間。后面再經(jīng)過一些簡單的篩選,就能大大縮小找房的選擇范圍了。

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

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

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

相關文章

  • 使用python模擬高斯分布例子

    使用python模擬高斯分布例子

    今天小編就為大家分享一篇使用python模擬高斯分布例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 對Python 網(wǎng)絡設備巡檢腳本的實例講解

    對Python 網(wǎng)絡設備巡檢腳本的實例講解

    下面小編就為大家分享一篇對Python 網(wǎng)絡設備巡檢腳本的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • pyqt6實現(xiàn)QTimer定時器介紹和使用場景

    pyqt6實現(xiàn)QTimer定時器介紹和使用場景

    PyQt6中的QTimer是一個定時器類,用于在指定的時間間隔內執(zhí)行某個操作,本文主要介紹了pyqt6實現(xiàn)QTimer定時器介紹和使用場景,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Python Scrapy圖片爬取原理及代碼實例

    Python Scrapy圖片爬取原理及代碼實例

    這篇文章主要介紹了Python Scrapy圖片爬取原理及代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • python和go語言的區(qū)別是什么

    python和go語言的區(qū)別是什么

    在本篇文章中小編給大家整理的是一篇關于go語言和python的區(qū)別點,需要的朋友們可以學習下。
    2020-07-07
  • numpy和pandas中數(shù)組的合并、拉直和重塑實例

    numpy和pandas中數(shù)組的合并、拉直和重塑實例

    今天小編就為大家分享一篇numpy和pandas中數(shù)組的合并、拉直和重塑實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python中的pickle模塊常用函數(shù)

    Python中的pickle模塊常用函數(shù)

    這篇文章主要介紹了Python中的pickle模塊常用函數(shù),pickle模塊使用的數(shù)據(jù)格式是python專用的,能夠把python對象直接保存到文件,而不需要轉化為字符串,也不用底層的文件訪問操作把它們寫入到一個二進制文件中,需要的朋友可以參考下
    2023-09-09
  • python 殺死自身進程的實現(xiàn)方法

    python 殺死自身進程的實現(xiàn)方法

    今天小編就為大家分享一篇python 殺死自身進程的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python實現(xiàn)機械分詞之逆向最大匹配算法代碼示例

    python實現(xiàn)機械分詞之逆向最大匹配算法代碼示例

    這篇文章主要介紹了python實現(xiàn)機械分詞之逆向最大匹配算法代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python中Scipy庫在信號處理中的應用詳解

    Python中Scipy庫在信號處理中的應用詳解

    信號處理作為數(shù)字信號處理領域的關鍵技術,涵蓋了從信號獲取、傳輸、存儲到最終應用的一系列處理步驟,在這篇博客中,我們將深入探討Python中Scipy庫在信號處理領域的應用,需要的朋友可以參考下
    2023-12-12

最新評論