通过POST请求检索数据

通过POST请求检索数据,post,python-3.x,urllib,Post,Python 3.x,Urllib,我无法通过编程方式从特定网页获取数据 允许按名称和州搜索美国国际象棋等级 提交一个POST请求,我可以得到相当于,但仍然需要一个点击“搜索”按钮,以获得有用的数据。进入结果页面的最佳方式是什么 import urllib.request import urllib.parse data = {'memfn':'hikaru', 'memln':'nakamura'} url = r'http://www.uschess.org/msa/thin2.php' s = urllib.parse.ur

我无法通过编程方式从特定网页获取数据

允许按名称和州搜索美国国际象棋等级

提交一个POST请求,我可以得到相当于,但仍然需要一个点击“搜索”按钮,以获得有用的数据。进入结果页面的最佳方式是什么

import urllib.request
import urllib.parse
data = {'memfn':'hikaru', 'memln':'nakamura'}
url = r'http://www.uschess.org/msa/thin2.php'
s = urllib.parse.urlopen(url, bytes(urllib.parse.urlencode(data),'UTF-8'))
s.read()
谢谢

这个有效:

#!/usr/bin/env python
import urllib

data = {'memfn':'hikaru', 'memln':'nakamura', 'mode':'Search'}
url = r'http://www.uschess.org/msa/thin2.php'
s = urllib.urlopen(url, bytes(urllib.urlencode(data)))
print s.read()
基本上,您需要提交隐藏参数
模式
和值
搜索
来模拟按钮按下


注意:抱歉,我为Python2.x重新编写了它,但我手头没有python3。

urllib3
是Python2和python3的独立库;标记描述是错误的(我会纠正它)。我知道我没有解决您的特定代码问题,但我强烈建议-它是为人类设计的。试一试,没有它你就活不下去了。谢谢,太好了。这对我来说有点神秘(因为mode参数的值在页面上已经是“Search”),但显然这是正确的做法。我也会检查请求。它是有效的,因为你实际上需要提交它,它在页面上,但你没有强迫它的值进入post请求。post请求模拟buttonpress,但如果button本身的值是ommited,则其背后的php代码可能无法注意到表单已提交。