続いて2つのhttpsリクエストを送信して、ターゲットページからhtml要素を取得するスクリプトを作成しました。私のスクリプトは問題なく問題なく実行できます。ただし、payload
ターゲットページに到達するための最終的なHTTPリクエストを送信するために、Chrome開発ツールから4つの値をコピーして4つのキーを入力する必要がありました。これは開始リンクであり、以下はターゲットページに到達する方法に関する説明です。
- ボタンをクリックし
Find Hotel
ます(chek-out
日付のデフォルトがcheck-in
日付よりも少なくとも1日長い場合は、日付を変更する必要はありません)。 - 下の画像のようにボックスにチェックを入れ、その
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
内で使用しましたpayload
。
ペイロード内で使用される値を自動的に入力するにはどうすればよいですか?
神尾の答えは十分ではありませんか?私は彼らの指示に従って結果を得ることができたと思います。
—
tmadam
こんにちは@tmadam、あなたの介入に感謝します。ええ、鴨尾の答えはどのように結果を得ることができるかを明確にしますが、私が上記のスクリプト内で自分でそれを実装できるかどうかは非常に疑わしく、それが私が賞金を本格的な答えを得るために設定したまさにその理由です。ありがとう。
—
ミトゥ
ああ、分かった。尋ねられた場合、@ Kamooがコードを提供すると確信しています。
—
tmadam
@MITHU回答を更新しました
—
Kamoo、
Btype
。最初のステップから選択したオプションに対応する動的な値である可能性があることに注意してください。PaxConfig
乗客に子供が含まれている場合も、形式が異なる場合があります。