J'ai créé un script pour obtenir les éléments html d'une page cible en envoyant deux requêtes https par la suite. Mon script peut parfaitement faire la chose. Cependant, j'ai dû copier les quatre valeurs des outils de développement Chrome pour remplir les quatre clés à l'intérieur payload
afin d'envoyer les dernières requêtes http pour atteindre la page cible. Ceci est le lien de départ et voici la description de la façon dont je pourrais atteindre la page cible.
- Cliquez sur le
Find Hotel
bouton (pas besoin de changer les dates si lachek-out
date est par défaut au moins un jour plus longue que lacheck-in
date). - Cochez la case comme l'image ci-dessous et appuyez sur le
Book Now
bouton juste au-dessus. Maintenant, cela devrait vous conduire automatiquement à la page cible. - En atteignant la page cible intitulée as
Enter Guest Details
, analysez les éléments html à partir de là
J'ai essayé avec (en travaillant un):
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)
Dans le script ci - dessus , je l' ai copié et collé la valeur CallFrom
, Btype
, PaxConfig
et usid
d'outils dev à utiliser dans payload
.
Comment puis-je remplir automatiquement les valeurs à utiliser dans la charge utile?
Btype
peut s'agir d'une valeur dynamique correspondant aux options choisies lors de la première étape. PaxConfig
pourrait également être dans un format différent si les passagers incluent des enfants.