我正在尝试编写一个脚本来搜索给定学者的所有已发表的论文。基本上,我正在使用python的Requests发送带有一些参数的POST请求(比如搜索选项和学者的名字)。我发现我主要处理的是这样的表格(为简单起见而截断和编辑):
<form name="searchForm"
method="post"
action="http://epub.cnki.net/kns/brief/default_result.aspx"
id="searchForm" autocomplete="off" onsubmit="collectSelectDB();">
...
<div class="research">
<span class="reopt" id="typeSelect">
<select id="txt_1_sel" name="txt_1_sel" class="searchw8">
<option value="AU$=|" selected="true">Author</option>
...
</span>
<input class="rekeyword" value="" id="txt_1_value1" name="txt_1_value1" ...>
<input type="button" id="btnSearch" class="researchbtn"
onclick="javascript: cnkiIndexSearchOnclick('&ua=1.11');">
</div>
...
我不确定的一件事是“按钮”,它似乎通过点击触发了一个javascript(后来它产生了一个结果页面)。
当我传递这样的参数时,
#-*- coding: utf-8 -*-
import requests
url = 'http://epub.cnki.net/kns/brief/default_restult.aspx'
name = u'李强'
payload = {'txt_1_value1' : name.encode('utf-8')}
r = requests.post(url, params = payload)
with open("results.html", "w") as f:
f.write(r.content)
它只是给我一个空的搜索结果,以及一个填充了作者姓名的搜索框。我想我没有正确发送POST请求,因为“按钮”的东西。这也是一种参数吗?我们该怎么处理呢?