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, payload
hedef 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 Hotel
düğmesiyle (eğer tarihleri değiştirmek gerekchek-out
tarihi en az bir gün daha uzun varsayılan olarakcheck-in
tarih). - Aşağıdaki görüntü gibi kutuyu işaretleyin ve
Book Now
hemen ü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
, PaxConfig
ve usid
içinde kullanılmak üzere dev gelen araçlar payload
.
Yükte kullanılacak değerleri otomatik olarak nasıl doldurabilirim?
Btype
ilk adımdan seçilen seçeneklere karşılık gelen dinamik bir değer olabileceğini unutmayın . PaxConfig
yolcular çocukları içeriyorsa farklı bir biçimde de olabilir.