質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.04%

Pythonista3でGoogleMapのリダイレクト後URLを取得したい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 90

score 126

Mac上のVSCodeではリダイレクト後の緯度経度を含んだURLが取得できましたが
iPhone上のpythonista3ではブラウザ偽装を使用してもftidのURLまでしか取得できませんでした

例えば東京タワーhttps://goo.gl/maps/MN26bVnPLk4A9jZY7
↓↓↓このURLを取得したい

https://www.google.co.jp/maps/place/%E6%9D%B1%E4%BA%AC%E3%82%BF%E3%83%AF%E3%83%BC/@35.6585805,139.7432442,17z/data=!3m2!4b1!5s0x60188bbd90bf26cf:0x4ceb5b05598646d0!4m5!3m4!1s0x60188bbd9009ec09:0x481a93f0d2a409dd!8m2!3d35.6585805!4d139.7454329?hl=ja&shorturl=1

しかしPythonista3では↓↓の様なURLしか取得できない

https://www.google.com/maps?q=%E3%80%92105-0011+%E6%9D%B1%E4%BA%AC%E9%83%BD%E6%B8%AF%E5%8C%BA%E8%8A%9D%E5%85%AC%E5%9C%92%EF%BC%94%E4%B8%81%E7%9B%AE%EF%BC%92%E2%88%92%EF%BC%98+%E6%9D%B1%E4%BA%AC%E3%82%BF%E3%83%AF%E3%83%BC&ftid=0x60188bbd9009ec09:0x481a93f0d2a409dd&hl=ja-JP&gl=jp&entry=gps&lucs=swa&shorturl=1
import sys
import urllib.request

ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582'
headers = {'User-Agent' : ua}

# リダイレクト先URLを取得する関数
def get_redirect_url(src_url):
    req = urllib.request.Request(src_url, None, headers)
    with urllib.request.urlopen(req) as res:
        url = res.geturl() # 最終的な URL を取得
        if src_url == url:
            return None # 指定された URL と同じなのでリダイレクトしていない
        else:
            return url # 指定された URL と異なるのでリダイレクトしている

src_url = 'https://goo.gl/maps/MN26bVnPLk4A9jZY7'

# リダイレクト先URLを取得
redirect_url = get_redirect_url(src_url)

# リダイレクト先URLを出力
if redirect_url is not None:
  print(redirect_url)

参考:Python で HTTP リダイレクト先の URL を取得する

リダイレクトが短縮URLの後に2回(?)行なわれる様なので二重にリダイレクト後のURLを取得しようとしてもftidのURLしか取得できませんでした

Google手強し…

解決策をご存知の方がいらっしゃったらご教示くださいませ
よろしくお願いします

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

私の環境ではPythonista3からでもPCと同じURLが返ってきました。
以下はPythonista3のコンソールでの実行結果をコピーしたものです。
ユーザーエージェントは指定していません。
(iPhone SE MXD12J/A, iOS 14.4.2, Pythonista v.3.3, Python 3.6.1)

>>> import urllib.request
>>> src_url = "https://goo.gl/maps/MN26bVnPLk4A9jZY7"
>>> r = urllib.request.urlopen(src_url)
>>> r.geturl()
'https://www.google.co.jp/maps/place/%E6%9D%B1%E4%BA%AC%E3%82%BF%E3%83%AF%E3%83%BC/@35.6585805,139.7432442,17z/data=!3m2!4b1!5s0x60188bbd90bf26cf:0x4ceb5b05598646d0!4m5!3m4!1s0x60188bbd9009ec09:0x481a93f0d2a409dd!8m2!3d35.6585805!4d139.7454329?hl=ja&shorturl=1'

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/05/09 10:52

    座標を取得できるとほかの地図アプリと連携がとれるのでグーグルの検索能力を活かしてほかのアプリでナビしたいとおもいまして
    グーグルのナビは変な所へナビされる!

    キャンセル

  • 2021/05/09 11:50 編集

    なるほど。あとはftidのURLでも返されるソースファイルには緯度経度含まれているようですのでそこから拝借するとかですかね。

    キャンセル

  • 2021/05/09 22:31

    ソースファイルにも緯度経度が載っていました!
    ありがとうございます

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る