Ich habe ein Skript erstellt, um die HTML-Elemente von einer Zielseite abzurufen, indem anschließend zwei https-Anforderungen gesendet werden. Mein Skript kann das Ding einwandfrei machen. Ich musste jedoch die vier Werte aus den Chrome-Entwicklungstools kopieren, um die vier darin enthaltenen Schlüssel auszufüllen und payload
die endgültigen http-Anforderungen zu senden, um die Zielseite zu erreichen. Dies ist der Startlink und im Folgenden wird beschrieben, wie ich die Zielseite erreichen kann.
- Klicken Sie auf die
Find Hotel
Schaltfläche (chek-out
Datum muss nicht geändert werden, wenn das Datum standardmäßig mindestens einen Tag länger als dascheck-in
Datum ist). - Aktivieren Sie das Kontrollkästchen wie im Bild unten und drücken Sie die
Book Now
Taste direkt darüber. Jetzt sollte es Sie automatisch zur Zielseite führen. - Wenn Sie die Zielseite mit dem Titel als erreicht haben
Enter Guest Details
, analysieren Sie die HTML-Elemente von dort aus
Ich habe versucht mit (Arbeit):
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)
In dem obigen Skript habe ich kopiert und den Wert eingefügt CallFrom
, Btype
, PaxConfig
und usid
von Entwickler - Tool zur Verwendung innerhalb payload
.
Wie kann ich die Werte automatisch eingeben, die innerhalb der Nutzlast verwendet werden sollen?
Btype
möglicherweise ein dynamischer Wert ist, der den im ersten Schritt ausgewählten Optionen entspricht. PaxConfig
kann auch in einem anderen Format vorliegen, wenn Passagiere Kinder enthalten.