0

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

http://www.uschess.org/msa/thin2.php允许人们按名称和州搜索美国国际象棋等级。

提交 POST 请求,我可以访问相当于http://www.uschess.org/msa/thin2.php?memln=nakamura&memfn=hikaru但仍然需要单击“搜索”按钮才能获取有用的数据。访问该结果页面的最佳方式是什么?

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()

谢谢!

4

1 回答 1

2

这个有效:

#!/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()

基本上你需要提交mode带有值的隐藏参数Search来模仿按钮按下。

注意:我为 python 2.x 重写了它,对不起,但我手边没有 python3。

于 2012-12-27T23:08:48.540 回答