无法让我的脚本自动生成一些要在有效负载中使用的值

问题描述 投票:2回答:1

我创建了一个脚本,通过随后发送两个https请求从目标页面获取html元素。我的脚本可以完美地完成任务。但是,我必须复制chrome开发工具中的四个值以填写payload中的四个键,以便发送最终的http请求以到达目标页面。这是[starting link,以下是有关如何到达目标页面的说明。

  1. 单击Find Hotel按钮(如果默认情况下chek-out日期至少比check-in日期长一天,则无需更改日期。
  2. 像下面的图像一样勾选方框,然后按其上方的Book Now按钮。现在,它应该会自动将您引导到目标页面。
  3. 到达标题为Enter Guest Details的目标页面时,从那里解析html元素

enter image description here

我已经尝试过(使用一个):

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':'30/10/2019','toDate':'31/10/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)

在上面的脚本中,我从开发工具中复制并粘贴了CallFromBtypePaxConfigusid的值,以便在payload中使用。

如何填写有效载荷内自动使用的值?

python python-3.x web-scraping
1个回答
0
投票

发送到第二个请求的参数是Base64编码的,在解码后它们是:

    'CallFrom':'1:16:38 PM|B2C|1:16:38 PM',
    'Btype':'1:16:38 PM|A|1:16:38 PM',
    'PaxConfig':'1:16:38 PM|2|0|2|0||1:16:38 PM',
    'usid':'1:16:38 PM|henxvi3qegsrwqzewilkfp2m|1:16:38 PM'  

乍看之下,您已经注意到它们处于以下形式:

$date|$param|$date

$date是当前时间,格式为utc_ts_now.strftime("%I:%M:%S %p")

对于这四个参数的$param部分,我想应该将其固定为CallFromBtypeusidsession键,您可以在上一个请求中或其他位置轻松找到它在HTML元素中。

[PaxConfig是访客计数,与您在第一个请求中发送的roomConfiguration有关。

© www.soinside.com 2019 - 2024. All rights reserved.