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 payloadafin 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 Hotelbouton (pas besoin de changer les dates si lachek-outdate est par défaut au moins un jour plus longue que lacheck-indate). - Cochez la case comme l'image ci-dessous et appuyez sur le
Book Nowbouton 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, PaxConfiget usidd'outils dev à utiliser dans payload.
Comment puis-je remplir automatiquement les valeurs à utiliser dans la charge utile?
Btypepeut s'agir d'une valeur dynamique correspondant aux options choisies lors de la première étape. PaxConfigpourrait également être dans un format différent si les passagers incluent des enfants.
