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 payloadpara 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 Hotelbotón (no es necesario cambiar las fechas si lachek-outfecha es por lo menos un día más larga que lacheck-infecha). - Marque la casilla como la imagen de abajo y presione el
Book Nowbotó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, PaxConfigy usiddesde dev herramientas para su uso dentro payload.
¿Cómo puedo completar los valores automáticamente para usarlos dentro de la carga útil?
Btypepodría ser un valor dinámico correspondiente a las opciones elegidas en el primer paso. PaxConfigtambién podría estar en un formato diferente si los pasajeros incluyen niños.
