[解決済み] Python: urljoinの混乱
2022-03-02 04:53:39
質問
異なるパーツからURLを形成しようとしているのですが、このメソッドの動作が理解できず困っています。例えば
Python 3.x
from urllib.parse import urljoin
>>> urljoin('some', 'thing')
'thing'
>>> urljoin('http://some', 'thing')
'http://some/thing'
>>> urljoin('http://some/more', 'thing')
'http://some/thing'
>>> urljoin('http://some/more/', 'thing') # just a tad / after 'more'
'http://some/more/thing'
urljoin('http://some/more/', '/thing')
'http://some/thing'
このメソッドの具体的な動作について教えてください。
どのように解決するのですか?
(私にとって)一番良い考え方は、第1引数です。
base
は、あなたがブラウザで見ているページのようなものです。 第2引数の
url
は、そのページ上のアンカーの href です。 その結果は、クリックしたときに表示される最終的なURLです。
>>> urljoin('some', 'thing')
'thing'
これは私の説明からして納得がいくものです。 しかし、ベースにはスキームとドメインが含まれていることを期待したいところです。
>>> urljoin('http://some', 'thing')
'http://some/thing'
もし、あなたがvhostを利用していて、以下のようなアンカーがあった場合。
<a href='thing'>Foo</a>
にリンクされます。
http://some/thing
>>> urljoin('http://some/more', 'thing')
'http://some/thing'
私たちは
some/more
の相対リンクが必要です。
thing
に移動します。
/some/thing
>>> urljoin('http://some/more/', 'thing') # just a tad / after 'more'
'http://some/more/thing'
ここで、私たちは
some/more
であるのに対し、私たちは
some/more/
というように、異なるものです。 さて、相対リンクは私たちを
some/more/thing
>>> urljoin('http://some/more/', '/thing')
'http://some/thing'
そして最後に。 もし
some/more/
で、href が
/thing
にリンクされます。
some/thing
.
関連
-
pythonを使ったオフィス自動化コード例
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] 億の相対的輸入
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python implement mysql add delete check change サンプルコード
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない