Я создал скрипт для получения html-элементов с целевой страницы путем последующей отправки двух запросов https. Мой сценарий может сделать вещь без нареканий. Однако мне пришлось скопировать четыре значения из инструментов chrome dev, чтобы заполнить четыре ключа внутри payload
, чтобы отправить окончательные http-запросы для достижения целевой страницы. Это начальная ссылка, а ниже приведено описание того, как я могу добраться до целевой страницы.
- Нажмите на
Find Hotel
кнопку (нет необходимости менять даты, еслиchek-out
по умолчанию дата по крайней мере на один день длиннееcheck-in
даты). - Установите флажок, как на изображении ниже, и нажмите
Book Now
кнопку над ним. Теперь он должен автоматически привести вас к целевой странице. - Достигнув целевой страницы с названием as
Enter Guest Details
, проанализируйте html-элементы оттуда
Я пытался с (работает):
import requests
from bs4 import BeautifulSoup
url = 'https://booking.discoverqatar.qa/SearchHandler.aspx?'
second_url = 'https://booking.discoverqatar.qa/PassengerDetails.aspx?'
params = {
'Module':'H','txtCity':'','hdnCity':'2947','txtHotel':'','hdnHotel':'',
'fromDate':'05/11/2019','toDate':'07/11/2019','selZone':'','minSelPrice':'',
'maxSelPrice':'','roomConfiguration':'2|0|','noOfRooms':'1',
'hotelStandardArray':'63,60,54,50,52,51','CallFrom':'','DllNationality':'-1',
'HdnNoOfRooms':'-1','SourceXid':'MTEzNzg=','mdx':''
}
payload = {
'CallFrom':'MToxNjozOCBQTXxCMkN8MToxNjozOCBQTQ==',
'Btype':'MToxNjozOCBQTXxBfDE6MTY6MzggUE0=',
'PaxConfig':'MToxNjozOCBQTXwyfDB8MnwwfHwxOjE2OjM4IFBN',
'usid':'MToxNjozOCBQTXxoZW54dmkzcWVnc3J3cXpld2lsa2ZwMm18MToxNjozOCBQTQ=='
}
with requests.Session() as s:
r = s.get(url,params=params,headers={"User-agent":"Mozilla/5.0"})
res = s.get(second_url,params=payload,headers={
"User-agent":"Mozilla/5.0",
"Referer":r.url
})
soup = BeautifulSoup(res.text,'lxml')
print(soup)
В приведенном выше сценарии я скопировать и вставить значение CallFrom
, Btype
, PaxConfig
и usid
от разработчика инструментов для использования в payload
.
Как я могу заполнить значения автоматически для использования в полезной нагрузке?
Btype
может быть динамическое значение, соответствующее параметрам, выбранным на первом шаге. PaxConfig
также может быть в другом формате, если пассажиры включают детей.