如何做出反应'使用Python

时间:2016-10-04 12:20:20

标签: python python-requests

我正在使用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请求。但到目前为止没有任何效果。

我希望你能帮助我。

感谢。

1 个答案:

答案 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')]