URLが相対的なものか絶対的なものかを確認するための推奨ソリューションは何ですか?URLがPythonを使用して絶対的であるかどうかを確認するにはどうすればよいですか?
答えて
のPython 2
あなたはURLを解析しurlparse
モジュールを使用することができますし、それがすることにより、相対的または絶対的だならば、あなたは確認することができますホスト名が設定されているかどうかを確認します。
>>> import urlparse
>>> def is_absolute(url):
... return bool(urlparse.urlparse(url).netloc)
...
>>> is_absolute('http://www.example.com/some/path')
True
>>> is_absolute('//www.example.com/some/path')
True
>>> is_absolute('/some/path')
False
Pythonの3
urlparse
がurllib.parse
に移動するので、以下を使用されています:
from urllib.parse import urlparse
def is_absolute(url):
return bool(urlparse(url).netloc)
あなたはURLがベースURLとそれに参加するために、絶対的または相対的であるかどうかを知りたい場合は、私は通常、とにかくurlparse.urljoin
の操作を行います。
>>> from urlparse import urljoin
>>> urljoin('http://example.com/', 'http://example.com/picture.png')
'http://example.com/picture.png'
>>> urljoin('http://example1.com/', '/picture.png')
'http://example1.com/picture.png'
>>>
をこれは私がやりたいことであることが判明 - それは、2番目のURLのすべての未指定部分のデフォルトとして最初のURLを扱います。第2のものが絶対的なものであれば、それはちょうどそのものを使用します。 – rescdsk
ないについて、あなたは求めているものを確認してください。 http://
で始まるかどうかを調べるだけですか? そうなら、シンプルな正規表現がこのトリックを行います。
(EDIT:下記のコメントを参照してください - 非常に良い点を!!)
文字列が既知の接頭辞で始まるかどうかを確認するためだけに正規表現を使用しないでください。文字列の 'startswith'メソッドを使用してください。 –
また、URLのチェックは、特定のプレフィックスをチェックするよりも少し複雑です。 – rplnt
は受け入れ答えをコメントので、新しい答えとして、このコメントを書き込むことができません:IMOスキームをチェックします受け入れられた回答(bool(urlparse.urlparse(url).scheme)
)は、http://example.com/file.jpg、https://example.com/file.jpg、//example.com/file.jpgは絶対URLですが、最後にはスキーム= ''
:
is_absolute = True if '//' in my_url else False
AFAIK // foo/barは有効な相対URLです。 「相対的」とは「スキームとネットロックなし」を意味します。 – guettli
- 1. URLが画像であるかどうかを確認するにはどうすればよいですか?
- 2. Pythonを使用してURLを確認するにはどうすればよいですか?
- 3. ルート「URL」が存在するかどうかを確認するにはどうすればよいですか?
- 4. 文字列がJavaの絶対URLまたは相対URLであるかどうかを確認
- 5. ウィンドウがオフスクリーンであるかどうかを確認するにはどうすればよいですか?
- 6. ファイルが空であるかどうかを確認するにはどうすればよいですか?
- 7. フォームがヘルプモードであるかどうかを確認するにはどうすればよいですか?
- 8. ジェネリックメソッドパラメータが値型であるかどうかを確認するにはどうすればよいですか?
- 9. TextFieldが整数であるかどうかを確認するにはどうすればよいですか?
- 10. ネットパイプサービスがリッスンしているかどうかを確認するにはどうすればよいですか
- 11. Androidアプリにメモリリークがあるかどうかを確認するにはどうすればよいですか?
- 12. Android:アクティビティにオプションメニューがあるかどうかを確認するにはどうすればよいですか?
- 13. メモリリークがあるかどうかを確認するにはどうすればよいですか?
- 14. Facebookのタイムラインがあるかどうかを確認するにはどうすればよいですか?
- 15. ポップアップページが開いているかどうかを確認するにはどうすればよいですか?
- 16. 機能が部分的かどうかを確認するにはどうすればよいですか?
- 17. ウェブサイト全体で特定のURLにリンクしているページがあるかどうかを確認するにはどうすればよいですか?
- 18. Pythonでは、urllibを使用して、Webサイトが404か200かどうかを確認するにはどうすればよいですか?
- 19. 絶対URLと相対URLを結合するにはどうすればよいですか?
- 20. pdfページにブックマークがあるかどうかを確認するにはどうすればいいですか?
- 21. 要素にクリックハンドラがあるかどうかを確認するにはどうすればいいですか?
- 22. ユーザがpublish_stream権限を同期的に使用しているかどうかを確認するにはどうすればよいですか?
- 23. デルファイを使用しているシステムにMSXML6がインストールされているかどうかを確認するにはどうすればよいですか?
- 24. scpが利用可能かどうかを確認するにはどうすればよいですか?
- 25. ユーザーがindex.htmlにいるかどうかを確認するにはどうすればよいですか?
- 26. データが新しいかどうかを確認するにはどうすればよいですか?
- 27. RVideoを使用してファイルが有効なビデオストリームであるかどうかを確認するにはどうすればよいですか?
- 28. AppleScriptを使用してPowerPointでプレゼンテーションが再生されているかどうかを確認するにはどうすればよいですか?
- 29. JavaScriptを使用してDOMオブジェクトがウィンドウ外にあるかどうかを確認するにはどうすればよいですか?
- 30. CURLを使用してウェブページに特定のテキストがあるかどうかを確認するにはどうすればよいですか?
'www.example.com/some/path'もaboluteとしてカウントしてはいけませんか? – Geo
正式には、文字列全体をパスとする相対URLです。絶対値として数えたい場合は、いくつかの前処理によって 'http://'を追加するか、 'urlparse'を使用しないでください。 –
RFCによると '// google.com'はプロトコル相対URLです。そしてあなたのコードは 'False'を返します。 – Nik