ฉันสร้างสคริปต์เพื่อรับองค์ประกอบ html จากหน้าเป้าหมายโดยส่งคำขอ https สองคำขอในภายหลัง สคริปต์ของฉันสามารถทำสิ่งที่ไร้ที่ติ อย่างไรก็ตามฉันต้องคัดลอกสี่ค่าจากเครื่องมือ dev ของ Chrome เพื่อกรอกข้อมูลสี่ปุ่มภายในpayload
เพื่อส่งคำขอ http สุดท้ายเพื่อไปยังหน้าเป้าหมาย นี่คือลิงค์เริ่มต้นและต่อไปนี้เป็นคำอธิบายว่าฉันจะไปถึงหน้าเป้าหมายได้อย่างไร
- คลิกที่
Find Hotel
ปุ่ม (ไม่จำเป็นต้องเปลี่ยนวันที่หากchek-out
วันที่เป็นวันเริ่มต้นโดยยาวกว่าcheck-in
วันที่อย่างน้อยหนึ่งวัน) - ทำเครื่องหมายที่ช่องเหมือนภาพด้านล่างแล้วกด
Book Now
ปุ่มด้านบน ตอนนี้มันจะพาคุณไปยังหน้าเป้าหมายโดยอัตโนมัติ - เมื่อไปถึงหน้าเป้าหมายที่มีชื่อว่า as
Enter Guest Details
ให้แยกองค์ประกอบ html ออก
ฉันเคยลอง (ทำงานหนึ่งชิ้น):
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)
ในสคริปต์ข้างต้นที่ผมได้คัดลอกและวางค่าของCallFrom
, Btype
, PaxConfig
และusid
จาก dev payload
เครื่องมือในการใช้งานภายใน
ฉันจะกรอกค่าโดยอัตโนมัติเพื่อใช้ภายในเพย์โหลดได้อย่างไร
Btype
อาจเป็นค่าแบบไดนามิกที่สอดคล้องกับตัวเลือกที่เลือกจากขั้นตอนแรก PaxConfig
อาจอยู่ในรูปแบบที่แตกต่างกันหากผู้โดยสารมีเด็ก