URL на самом деле является просто строкой, здесь подойдет любая из обычных техник манипуляции со строками.В ваших компонентных деталях нет символов, которые также потребовали бы здесь кодирования URL, что упрощает весь процесс.
Если у вас есть компоненты, в которых используются символы, которых нет в списке незарезервированных символов , затем используйте функцию urllib.parse.quote()
для преобразования этих символов в компоненты, безопасные для URL.
Вы можете использовать str.join()
с /
для объединения частей строки:
outbound_route = '1040'
outbound_date = '19-02-2019'
inbound_route = '1042'
inbound_date = '20-02-2019'
url = "https://booking.snav.it/#/booking/rates" # no trailing /
final_url = '/'.join([url, outbound_route, outbound_date, inbound_route, inbound_date])
или вы можете использовать форматированный строковый литерал :
url = "https://booking.snav.it/#/booking/rates/"
final_url = f'{url}{outbound_route}/{outbound_date}/{inbound_route}/{inbound_date}'
Преимущество этого подхода состоит в том, что компоненты не обязательно должны быть строками;если outbound_route
и inbound_route
являются целыми числами, вам не нужно сначала явно преобразовывать их в строки.
Или, поскольку пути URL работают во многом как пути файловой системы POSIX, вы можете использовать pathlib.PosixPurePath()
class для создания пути:
from pathlib import PosixPurePath
path = PosixPurePath('/booking/rates') / outbound_route / outbound_date / inbound_route / inbound_date
final_url = f"https://booking.snav.it/#{path}"
Во всех случаях вы получите окончательный URL-адрес для использования в requests
:
res = requests.get(final_url, params=params)