使用请求浏览多个页面

时间:2016-11-11 00:13:41

标签: python python-requests screen-scraping bioinformatics

我正在尝试浏览以下网页:

http://www.regulomedb.org/

基本上,我在文本框中输入我的数据,然后单击“提交”。提交后,我想下载可用的文件。

截至目前,我有:

data = {'data': 'rs7881236'}
resp = requests.post('http://www.regulomedb.org/results', data)

当我查看resp的内容时,我能够获得以下页面的HTML文本。但是,我需要做的是下载文件。我不确定在提交后如何导航它。棘手的部分是我需要通过第一页提交我的数据。然后在到达第二页后,我需要以某种方式导航到下载链接,但我不确定如何使用已生成的响应对象。

2 个答案:

答案 0 :(得分:2)

您可能希望使用像RoboBrowserBeautiful 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)