概要
こんな感じのURLがあるとして、https://api.twitter.com/1.1/statuses/user_timeline.json&screen_name=drwtsn64
urllib.parse.urlparse()
したあとに
query部分にcount=200
を追加して、元のURLに戻す方法。
検証コード
import urllib.parse
url = 'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=drwtsn64'
parsed = urllib.parse.urlparse(url)
print(parsed)
query = urllib.parse.parse_qs(parsed.query, True)
print(query)
query['count'] = 200
print(query)
encoded = urllib.parse.urlencode(query, True)
print(encoded)
reversed = urllib.parse.ParseResult(parsed.scheme, parsed.netloc, parsed.path, parsed.params, encoded, parsed.fragment).geturl()
print(reversed)
出力
ParseResult(scheme='https', netloc='api.twitter.com', path='/1.1/statuses/user_timeline.json', params='', query='screen_name=drwtsn64', fragment='')
{'screen_name': ['drwtsn64']}
{'screen_name': ['drwtsn64'], 'count': 200}
screen_name=drwtsn64&count=200
https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=drwtsn64&count=200
注意点
urlencode()
に渡してるquery
はdictionaryなので、クエリ文字の順番は保証されない