Tôi đã tạo một tập lệnh để lấy các phần tử html từ trang đích bằng cách gửi hai yêu cầu https sau đó. Kịch bản của tôi có thể làm điều hoàn hảo. Tuy nhiên, tôi đã phải sao chép bốn giá trị từ các công cụ phát triển chrome để điền vào bốn khóa bên payloadtrong để gửi các yêu cầu http cuối cùng để đến trang đích. Đây là liên kết bắt đầu và sau đây là mô tả về cách tôi có thể tiếp cận trang đích.
- Nhấp vào
Find Hotelnút (không cần thay đổi ngày nếuchek-outngày theo mặc định ít nhất một ngày dài hơncheck-inngày). - Đánh dấu vào ô như hình bên dưới và nhấn
Book Nownút ngay phía trên nó. Bây giờ, nó sẽ tự động dẫn bạn đến trang đích. - Khi đến trang đích có tiêu đề là
Enter Guest Details, phân tích các phần tử html từ đó
Tôi đã thử với (làm việc một):
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)
Trong kịch bản trên, chúng tôi đã sao chép và dán giá trị của CallFrom, Btype, PaxConfigvà usidtừ dev công cụ để sử dụng trong phạm vi payload.
Làm cách nào tôi có thể tự động điền các giá trị được sử dụng trong tải trọng?
Btypecó thể là giá trị động tương ứng với các tùy chọn được chọn từ bước đầu tiên. PaxConfigcũng có thể ở một định dạng khác nếu hành khách bao gồm trẻ em.
