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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Q&A

解決済

1回答

1595閲覧

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

mushroominger

総合スコア133

Pythonista

Pythonistaは、iOS上でPythonプログラミングができる開発アプリです。さらに、Pythonの関数・変数などを自動で補完する便利なコードエディタや、PythonスクリプトをiOS上で多様な形で機能させる各種機能も内包しています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

0グッド

0クリップ

投稿2021/05/04 11:25

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

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

url

1https://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しか取得できない

ftid

1https://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

python

1import sys 2import urllib.request 3 4ua = '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' 5headers = {'User-Agent' : ua} 6 7# リダイレクト先URLを取得する関数 8def get_redirect_url(src_url): 9 req = urllib.request.Request(src_url, None, headers) 10 with urllib.request.urlopen(req) as res: 11 url = res.geturl() # 最終的な URL を取得 12 if src_url == url: 13 return None # 指定された URL と同じなのでリダイレクトしていない 14 else: 15 return url # 指定された URL と異なるのでリダイレクトしている 16 17src_url = 'https://goo.gl/maps/MN26bVnPLk4A9jZY7' 18 19# リダイレクト先URLを取得 20redirect_url = get_redirect_url(src_url) 21 22# リダイレクト先URLを出力 23if redirect_url is not None: 24 print(redirect_url)

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

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

Google手強し…

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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

python

1>>> import urllib.request 2>>> src_url = "https://goo.gl/maps/MN26bVnPLk4A9jZY7" 3>>> r = urllib.request.urlopen(src_url) 4>>> r.geturl() 5'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/06 12:31

etherbeg

総合スコア1195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mushroominger

2021/05/08 11:53

回答ありがとうございます なぜか今やってみたところ全ての機器で座標が含まれたurlが返ってきました 謎は深まるばかりです
etherbeg

2021/05/08 12:09

では自己解決ということで…(笑)
mushroominger

2021/05/08 12:16

それが… ```python import urllib.request import appex r = appex.get_url() r = urllib.request.urlopen(r).geturl() print(r) ``` ではftidのurlになってしまうんです(謎
etherbeg

2021/05/08 12:50

appexって共有シートですよね。appex.get_url()を使うっていうことは共有シートを開くのはSafariで?Safariで共有シートを通して"https://goo.gl/maps/MN26bVnPLk4A9jZY7"っていうURLを渡すのにはどういう操作をしたらいいですか?
mushroominger

2021/05/08 13:21

pythonistaで先のコードを作成し Share Extension Shortcutsに割り当てます メモにurlを貼り付けてリンクを長押しし共有を選びます Run Pythonista Scriptで先に作成したショートカットを選ぶとできます ちなみに今回は座標データのあるurlが取得できました 本当に謎です
etherbeg

2021/05/08 13:53

ありがとうございます。できました。私の環境でも同じ結果(緯度経度を含んだURL)でした。 予期せぬタイミングで、想定した動作をしないようだと厄介ですね。
mushroominger

2021/05/09 01:52

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

2021/05/09 02:59 編集

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

2021/05/09 13:31

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問