He creado un script para obtener los elementos html de una página de destino enviando dos solicitudes https posteriormente. Mi script puede hacer la cosa sin problemas. Sin embargo, tuve que copiar los cuatro valores de las herramientas de desarrollo de Chrome para completar las cuatro claves payload
para enviar las solicitudes HTTP finales para llegar a la página de destino. Este es el enlace de inicio y a continuación se encuentra la descripción de cómo podría llegar a la página de destino.
- Haga clic en el
Find Hotel
botón (no es necesario cambiar las fechas si lachek-out
fecha es por lo menos un día más larga que lacheck-in
fecha). - Marque la casilla como la imagen de abajo y presione el
Book Now
botón justo encima de ella. Ahora, debería llevarte a la página de destino automáticamente. - Al llegar a la página de destino titulada como
Enter Guest Details
, analiza los elementos html desde allí
He intentado con (trabajando uno):
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)
En la secuencia de comandos que he copiado y pegado el valor de CallFrom
, Btype
, PaxConfig
y usid
desde dev herramientas para su uso dentro payload
.
¿Cómo puedo completar los valores automáticamente para usarlos dentro de la carga útil?
Btype
podría ser un valor dinámico correspondiente a las opciones elegidas en el primer paso. PaxConfig
también podría estar en un formato diferente si los pasajeros incluyen niños.