Я створив сценарій для отримання елементів html з цільової сторінки, надсилаючи згодом два https-запити. Мій сценарій може зробити цю справу бездоганно. Однак мені довелося скопіювати чотири значення з інструментів хромованого розробника, щоб заповнити чотири ключі всередині payload
, щоб надіслати остаточні запити http, щоб дійти до цільової сторінки. Це вихідне посилання, а нижче - опис того, як я міг дійти до цільової сторінки.
- Натисніть на
Find Hotel
кнопку (не потрібно змінювати дати, якщоchek-out
дата за замовчуванням принаймні на один день довшеcheck-in
дати). - Поставте галочку, як зображено нижче, і натисніть
Book Now
кнопку трохи вище. Тепер це повинно автоматично привести вас до цільової сторінки. - Досягнувши цільової сторінки під назвою "
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
може також бути в іншому форматі, якщо серед пасажирів є діти.