Daha sonra iki https isteği göndererek hedef sayfadan html öğelerini almak için bir komut dosyası oluşturdum. Senaryom bunu kusursuz bir şekilde yapabilir. Ancak, payloadhedef sayfaya ulaşmak için nihai http isteklerini göndermek için dört değeri doldurmak için chrome dev araçlarından dört değeri kopyalamak zorunda kaldım . Bu başlangıç bağlantısıdır ve hedef sayfaya nasıl ulaşabileceğimin açıklaması aşağıdadır.
- Tıklayın
Find Hoteldüğmesiyle (eğer tarihleri değiştirmek gerekchek-outtarihi en az bir gün daha uzun varsayılan olarakcheck-intarih). - Aşağıdaki görüntü gibi kutuyu işaretleyin ve
Book Nowhemen üstündeki düğmeye basın . Şimdi sizi otomatik olarak hedef sayfaya yönlendirmelidir. - Olarak adlandırılan hedef sayfaya ulaştıktan sonra
Enter Guest Details, html öğelerini oradan ayrıştırın
Ben denedim (çalışan bir):
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)
Yukarıdaki komut dosyasında ben kopyaladıktan ve değerini yapıştırılan CallFrom, Btype, PaxConfigve usidiçinde kullanılmak üzere dev gelen araçlar payload.
Yükte kullanılacak değerleri otomatik olarak nasıl doldurabilirim?
Btypeilk adımdan seçilen seçeneklere karşılık gelen dinamik bir değer olabileceğini unutmayın . PaxConfigyolcular çocukları içeriyorsa farklı bir biçimde de olabilir.
