我创建了一个脚本,可通过随后发送两个https请求从目标页面获取html元素。我的脚本可以完美地完成任务。但是,我必须复制chrome开发工具中的四个值以填充其中的四个键payload
,以便发送最终的http请求到达目标页面。这是起始链接,下面是有关如何到达目标页面的说明。
- 单击
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
从开发工具中使用payload
。
如何自动填写要在有效负载内使用的值?
Kamoo的答案不够吗?我认为我可以按照他们的指示取得结果。
—
tmadam '19
嗨@tmadam,感谢您的干预。是的,Kamoo的答案阐明了如何获得结果,但是我非常怀疑我是否可以在上述脚本中自己实现它,这就是我设置赏金以获取完整答案的原因。谢谢。
—
MITHU,
知道了 我确定@Kamoo会在要求时提供代码。
—
tmadam '19
@MITHU我更新了答案,请注意,它
—
Kamoo
Btype
可能是一个动态值,对应于从第一步中选择的选项。PaxConfig
如果乘客包括孩子,则格式也可能会有所不同。