Я создал скрипт для получения 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также может быть в другом формате, если пассажиры включают детей.
