我正在尝试从this booking website检索搜索结果。
我首先发出一个GET
请求,并使用BeautifulSoup
检索POST
请求数据所需的_csrf
。然后,我发出POST
请求,传递相关数据,但不是搜索结果,而是再次返回行程选择表单。我做错了什么
token = get_csrf_token()
params = set_params(token)
res = get_request(params)
def get_csrf_token():
url = 'https://www.booking.alilaurogruson.it/booking/services/datas'
r = requests.get(url, verify=False, timeout=10)
csrf = search_csrf_token(r)
return csrf
def search_csrf_token(r):
soup = BeautifulSoup(r.content,'html.parser')
csrf = soup.find('input', attrs={'name': '_csrf'})['value']
return csrf
def set_params( csrf):
params = urllib.parse.urlencode({
"inputSearchFerriesBean.areasGoing": "1002",
"inputSearchFerriesBean.tradesGoing": "12",
"inputSearchFerriesBean.ret": "true",
"inputSearchFerriesBean.areasReturn": "1007",
"inputSearchFerriesBean.tradesReturn": "18",
"inputSearchFerriesBean.dateGoing": "24/03/21",
"inputSearchFerriesBean.dateReturn": "24/03/21",
"_csrf": csrf
})
return params
def get_request(params):
url = "https://www.booking.alilaurogruson.it/booking/services/search.action"
r = requests.post(url, data=params, headers=headers, verify=False, timeout=10)
return r
使用session将帮助您重用cookies,cookies在获取所需内容方面起着重要作用。您不需要对参数进行编码,因为请求模块知道如何处理它
请尝试以下方法:
相关问题 更多 >
编程相关推荐