Saya telah membuat skrip untuk mendapatkan elemen html dari halaman target dengan mengirimkan dua permintaan https selanjutnya. Script saya dapat melakukan hal itu dengan sempurna. Namun, saya harus menyalin empat nilai dari alat dev chrome untuk mengisi empat kunci di payload
dalam untuk mengirim permintaan http akhir untuk mencapai halaman target. Ini adalah tautan awal dan berikut adalah uraian bagaimana saya dapat mencapai halaman target.
- Klik
Find Hotel
tombol (tidak perlu mengubah tanggal jikachek-out
tanggal secara default setidaknya satu hari lebih lama daricheck-in
tanggal). - Centang kotak seperti gambar di bawah ini dan tekan
Book Now
tombol tepat di atasnya. Sekarang, itu akan mengarahkan Anda ke halaman target secara otomatis. - Setelah mencapai halaman target berjudul
Enter Guest Details
, parsing elemen html dari sana
Saya sudah mencoba (bekerja):
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)
Dalam script di atas saya sudah disalin dan disisipkan nilai CallFrom
, Btype
, PaxConfig
dan usid
dari dev alat untuk digunakan di dalam payload
.
Bagaimana saya bisa mengisi nilai secara otomatis untuk digunakan dalam muatan?
Btype
mungkin nilai dinamis yang sesuai dengan opsi yang dipilih dari langkah pertama. PaxConfig
mungkin juga dalam format yang berbeda jika penumpang menyertakan anak-anak.