iT邦幫忙

0

Google Map API 有辦法查詢某國境內某品牌的所有分店地址嗎?

各位大大好
自己最近需要研究某品牌在幾個國家境內的店舖數量
因此想說用 Google map 應該可以達到
不過目前遇到點小問題

目前我使用的方式如下

import googlemaps
gmaps = googlemaps.Client(key=my_key)

detail_info = list()
shops = list()

# 爬取店家資訊
res = gmaps.places(query='無印良品', language='zh-TW', region='tw')
detail_info.extend(res['results'])
time.sleep(2)
while "next_page_token" in res:
    print('Go to next page...')
    next_page_token = res['next_page_token']
    res = gmaps.places(query='無印良品', language='zh-TW', region='tw', page_token=next_page_token)
    detail_info.extend(res['results'])
    time.sleep(2)

# Print 出結果
for index, each in enumerate(detail_info):
    shops.append([each['name'], each['formatted_address']])
    print(index + 1)
    print(each['name'])
    print(each['formatted_address'])
    print("============================")

顯示結果只有大概 35 間分店,如下:
https://ithelp.ithome.com.tw/upload/images/20211130/20110872pN3WD1JjsO.png

但實際到無印良品光網看,台灣境內應該有快 50 家左右的分店,而且顯示結果幾乎只在北部地區,完全沒有南部的,這樣有點困擾,看這狀況,感覺還是需要自己設定座標與半徑範圍。

請問各位大大,有沒有甚麼方法可以直接找出境內(ex. 台灣、美國、澳洲)的某品牌所有店家資訊呢?還是說都必須自行調整座標?

4
raytracy
iT邦大神 1 級 ‧ 2021-11-30 11:20:02

Google 上面的店家地址, 都是要由店家自主去更新的, Google 沒有強制的公權力, 可以強迫所有店家都主動來登記真實地址....

所以只要分店管理者沒上去登記, Google 地圖就不會有資料...
他的商家資訊本來就不是可靠的資料源, 依賴她不是個好方法...

你要不要直接找總公司問會比較快?

huahualiu iT邦新手 3 級 ‧ 2021-11-30 11:59:46 檢舉

謝謝大大
不過這是一個未來會規模化的功能XD
實際要每個品牌問有點小麻煩><

raytracy iT邦大神 1 級 ‧ 2021-11-30 12:10:15 檢舉

那你想一下, 在世界上還沒有 Google Map 這個產品之前, 那些老早就可以提供商店定位的導航系統, 他們是如何去收集到每一家分店的地址?

0
franx0722
iT邦新手 4 級 ‧ 2021-11-30 11:44:33

如果你在網頁上搜尋"無印良品"會在你目前的所在地方,顯示幾公里內所有的無印良品.
而不會顯示台灣境內所有的,或許你在搜尋時可以改變定位位置來做可能可以達到你想要的功能

0
smonkeyy
iT邦新手 2 級 ‧ 2021-12-01 08:53:18

在Google MAP網頁搜尋無印良品
也只會顯示所在地附近的店家,不會是全台灣的
我猜可能跟定位有關,不然你就試試把電腦定位功能關掉再試試
不過誠如ray大所說,Google MAP的店家資料要自己建立與更新
若店家未建立或更新,資料還是會有遺漏跟錯誤的
基本上還是要官網的會比較準確

0
阿翔
iT邦新手 5 級 ‧ 2021-12-03 10:08:07

如果要準確一點的話可以換個方式,寫一個爬蟲去撈官方網站的資料然後做排程

爬蟲的排程系統目前有現成的專案可以用
https://github.com/crawlab-team/crawlab

huahualiu iT邦新手 3 級 ‧ 2021-12-03 20:06:36 檢舉

我也想撈官方網站XD
但是官方網站分店是串 Google map API 直接做標記 XD

阿翔 iT邦新手 5 級 ‧ 2021-12-06 10:41:51 檢舉

可以用 selenium 來爬看看 ~ 等 js load 完再去 parse html 的部分 ~

我要發表回答

立即登入回答