内のURLを構築するためのライブラリ:あなたが使用することをお勧めしますと、なぜでしょうどのようなライブラリのように私はPythonでURLを構築するためのライブラリを見つける必要があるのPython
http://subdomain.domain.com?arg1=someargument&arg2=someotherargument
?この種のライブラリには「最良の」選択肢がありますか?
内のURLを構築するためのライブラリ:あなたが使用することをお勧めしますと、なぜでしょうどのようなライブラリのように私はPythonでURLを構築するためのライブラリを見つける必要があるのPython
http://subdomain.domain.com?arg1=someargument&arg2=someotherargument
?この種のライブラリには「最良の」選択肢がありますか?
urlparse
python標準ライブラリではすべて有効なURLを構築しています。 urlparseのドキュメントを確認してください
具体的には[urlunparse](https://docs.python.org/2/library/urlparse.html#urlparse.urlunparse)またはURLを作成するために分割しない –
urlparseはpython 3以降urllib.parseに移動されました:https:/ /docs.python.org/3.5/library/urllib.parse.html?highlight=urlparse –
私はPythonのurllib
のために行くでしょう、それは組み込みのライブラリです。
# Python 2:
import urllib
# Python 3:
# import urllib.parse
getVars = {'var1': 'some_data', 'var2': 1337}
url = 'http://domain.com/somepage/?'
# Python 2:
print(url + urllib.urlencode(getVars))
# Python 3:
# print(url + urllib.parse.urlencode(getVars))
出力:
http://domain.com/somepage/?var2=1337&var1=some_data
urllib.urlencode(getVars) – lasote
Pythonの '+'で文字列を連結しません。 '' {} {} 'を試してください。format(url、querystring) ' – spudfkc
私は同感ですが、トレードオフです。この場合、連結には+を使用することに何も問題はなく、Python 2以降では+を使用してもスピード違反はありません。 しかし、PEP8標準を完全に遵守し、クロスコンパチビリティ/安定性を得るためには、format()、append()、およびjoin()を使う方が良いでしょう。 – chjortlund
import requests
payload = {'key1':'value1', 'key2':'value2'}
response = request.get('http://fireoff/getdata', params=payload)
print response.url
副作用としてWebリクエストも発行しますか? –
@TylerLong [はいです](http://docs.python-requests.org/ja/latest/api/#main-interface)。 –
これは「ケーキをどうやって焼くのですか?」と答えることに似ています。 「ベーカリーを開き、中を歩いてケーキを頼む」 – Ian
import urllib
def make_url(base_url , *res, **params):
url = base_url
for r in res:
url = '{}/{}'.format(url, r)
if params:
url = '{}?{}'.format(url, urllib.urlencode(params))
return url
>>>print make_url('http://example.com', 'user', 'ivan', aloholic='true', age=18)
http://example.com/user/ivan?age=18&aloholic=true
URLを生成するurlparse
の使用例です。これにより、スラッシュのチェックを心配することなくURLへのパスを追加する利便性が提供されます。
import urllib
import urlparse
def build_url(baseurl, path, args_dict):
# Returns a list in the structure of urlparse.ParseResult
url_parts = list(urlparse.urlparse(baseurl))
url_parts[2] = path
url_parts[4] = urllib.urlencode(args_dict)
return urlparse.urlunparse(url_parts)
args = {'arg1': 'value1', 'arg2': 'value2'}
# works with double slash scenario
url1 = build_url('http://www.example.com/', '/somepage/index.html', args)
print(url1)
>>> http://www.example.com/somepage/index.html?arg1=value1&arg2=value2
# works without slash
url2 = build_url('http://www.example.com', 'somepage/index.html', args)
print(url2)
>>> http://www.example.com/somepage/index.html?arg1=value1&arg2=value2
リクエスト(http://docs.python-requests.org/en/latest/)が一般的に推奨されていますが、組み込みモジュールではありません。 – Moshe
それは大丈夫です、私は、それが内蔵されているかどうかに関係なく、任意のライブラリを求めています。ありがとうございました! –