我正在尝试浏览以下网页:
基本上,我在文本框中输入我的数据,然后单击“提交”。提交后,我想下载可用的文件。
截至目前,我有:
data = {'data': 'rs7881236'}
resp = requests.post('http://www.regulomedb.org/results', data)
当我查看resp的内容时,我能够获得以下页面的HTML文本。但是,我需要做的是下载文件。我不确定在提交后如何导航它。棘手的部分是我需要通过第一页提交我的数据。然后在到达第二页后,我需要以某种方式导航到下载链接,但我不确定如何使用已生成的响应对象。
答案 0 :(得分:2)
您可能希望使用像RoboBrowser或Beautiful Soup这样的库来解析下载表单中的值,一旦有了这些值,您就可以向http://www.regulomedb.org/download <发出另一个POST请求/ p>
答案 1 :(得分:2)
我在chrome中使用'inspect'来发现它实际上是两个调用。搜索调用返回一种名称为“sid”的密钥,然后用于下载正确的文件。以下是我测试你给出的一个例子的原因:
import requests
import re
query = 'rs7881236'
d_format = 'full' #optionas are 'full', 'gff', or 'bed'
query_payload = {'data': query}
r = requests.post('http://www.regulomedb.org/results', query_payload)
val = re.findall('name="sid" value="(.*?)"', r.text)
file_payload = {'format':d_format,'sid':val}
f = requests.post('http://www.regulomedb.org/download', file_payload)
print(f.text)