我正在使用Python请求从德国铁路公司的移动网站获取信息(https://mobile.bahn.de/bin/mobil/query.exe/dox')
例如:
import requests
query = {'S':'Stuttgart Hbf', 'Z':'München Hbf'}
rsp = requests.get('https://mobile.bahn.de/bin/mobil/query.exe/dox', params=query)
在这种情况下给出了正确的页面。
但是,使用以下查询:
query = {'S':'Cottbus', 'Z':'München Hbf'}
它提供了另一个响应,用户需要选择一个给定的选项(服务器对起始站感到困惑,因为有许多开头是' Cottbus')
现在,我的问题是:给定此响应,如何选择其中一个给定选项,然后重复请求而不会出现此错误?
我试着查看cookie,使用会话而不是简单的get请求。但到目前为止没有任何效果。
我希望你能帮助我。
感谢。
答案 0 :(得分:0)
如果响应中有选择,您可以使用Beautifulsoup来解析响应并获取选项:
import requests
from bs4 import BeautifulSoup
query = {'S': u'Cottbus', 'Z': u'München Hbf'}
rsp = requests.get('https://mobile.bahn.de/bin/mobil/query.exe/dox', params=query)
soup = BeautifulSoup(rsp.content, 'lxml')
# check if has choice dropdown
if soup.find('select'):
# Get list of tuples with text and input values that you will nee do use in the next POST request
options_value = [(option['value'], option.text) for option in soup.find_all('option')]