이후에 두 개의 https 요청을 보내 대상 페이지에서 html 요소를 가져 오는 스크립트를 만들었습니다. 내 스크립트는 완벽하게 할 수 있습니다. 그러나 payload
대상 페이지에 도달하기 위해 최종 http 요청을 보내려면 크롬 개발 도구에서 4 개의 값을 복사하여 4 개의 키를 채우십시오 . 이것은 시작 링크 이며 다음은 타겟 페이지에 도달하는 방법에 대한 설명입니다.
- 버튼을 클릭하십시오
Find Hotel
(chek-out
날짜가 기본적으로check-in
날짜 보다 하루가 더 긴 경우 날짜 를 변경할 필요가 없습니다 ). - 아래 이미지처럼 상자를 선택하고
Book Now
바로 위 의 버튼을 누릅니다. 이제 자동으로 대상 페이지로 연결됩니다. - 이라는 제목의 타겟 페이지에 도달하면
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
.
페이로드 내에서 사용할 값을 자동으로 채우려면 어떻게해야합니까?
Kamoo의 대답이 충분하지 않습니까? 지시에 따라 결과를 얻을 수 있다고 생각합니다.
—
tmadam
안녕하세요 @tmadam, 귀하의 개입에 감사드립니다. 예, Kamoo의 답변은 결과를 얻는 방법에 대해 명확하지만 위의 스크립트 내에서 직접 구현할 수 있을지는 의문입니다. 이것이 바로 현상금이 본격적인 답변을 얻도록하는 이유입니다. 감사.
—
MITHU
아, 알겠습니다 요청하면 @Kamoo가 코드를 제공 할 것이라고 확신합니다.
—
tmadam
@MITHU 대답을 업데이트했습니다
—
Kamoo
Btype
. 첫 번째 단계에서 선택한 옵션에 해당하는 동적 값일 수 있습니다. PaxConfig
승객이 어린이를 포함하는 경우 다른 형식 일 수도 있습니다.