我正在尝试使用请求库向包含两个表单的网站提交POST请求。该网站是https://itsapps.unc.edu/dir/dirSearch/view.htm,我正在尝试访问高级搜索表单。
表单的html如下:
...
<div id="basicSearch" class="yui-hidden">
<form onSubmit="return false;" method="post" accept-charset="UTF-8">
...
</form>
</div>
<div id="advancedSearch"><!-- advanced search -->
<form onSubmit="return false;" method="post" accept-charset="UTF-8">
<table class="section">
<tr>
<td colspan="2"><label for="affiliation">Search
...
我该怎么做呢?有没有办法指定表单ID /名称?现在我只有:
url = 'https://itsapps.unc.edu/dir/dirSearch/search'
form_data = {'affiliation':'students',
'firstname':'Anthony'}
response = requests.post(url, data=form_data)
print response.text
因为高级搜索选项具有隶属关系作为下拉列表,我假设在表单参数中将它自动选择与参数匹配的表单,但是当我从form_data中删除affiliation参数时输出不会改变。
注意,在检查开发人员工具网络信息以进行基本搜索时看到的表单数据是:
searchString=Anthony
和高级搜索是:
affiliation=student&firstname=Anthony&lastname=&email=&pid=&onyen=
答案 0 :(得分:1)
你只需要张贴到https://itsapps.unc.edu/dir/dirSearch/search
,你就会得到一些json:
In [1]: data = {
...: "firstname": "Laurel",
...: "lastname": "Foote-Hudson"}
In [2]:
In [2]: r = requests.post("https://itsapps.unc.edu/dir/dirSearch/search", data=data)
In [3]: print(r.json())
[{u'uncReverseDisplayName': u'Foote-Hudson, Laurel', u'telephoneNumber': u'xxxxxxxxxxxxxxx', u'eduPersonNickname': u'Laurel', u'uncPreferredSurname': u'Foote-Hudson', u'sn': u'Foote-Hudson', u'spid': u'240a0d7c1534aa3a', u'mail': u'xxxxxxxxxxx', u'givenName': u'Laurel'}
您可以使用chrome或firefox查看帖子表单字段:
您不提供的字段为空。
答案 1 :(得分:0)
您可以使用开发人员工具/ firebug /其他浏览器扩展程序查看它。没有任何明确说明您选择的形式。唯一的区别是哪些字段被发送回服务器。
如果是高级搜索,请记住所有字段都已发送 - 即使它们已空。