我使用以下代码来搜索网络“http://gs.amac.org.cn:10080/amac-infodisc/res/pof/manager/index.html”。为了研究网络,我使用json格式发布数据。它可以响应json内容。奇怪的是它始终响应相同的内容,无论它是什么“页面”数字或它是什么“大小”。任何对此问题感兴趣的人都可以尝试更改“postdata”中的“页面”编号并查看相同的“身份”回应。
import urllib2
import urllib
import json
import random
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.10551.6 Safari/537.36",
"Content-Type": "application/json"}
# http://gs.amac.org.cn:10080/amac-infodisc/res/pof/manager/index.html
# change the "page" number here, response the same "id"
postdata = {"rand":random.random(),"page":10,"size":20}
url = "http://gs.amac.org.cn:10080/amac-infodisc/api/pof/manager"
postdata = json.dumps(postdata)
req = urllib2.Request(url,data=postdata,headers=headers)
response = json.load(urllib2.urlopen(req,timeout=30))
print response["content"][0]["id"]
答案 0 :(得分:0)
问题是页面的参数不是作为发布数据发送的,而是作为查询参数发送的:
更改参数类型可修复问题:
import requests
import random
page = 1
size = 20
rand = random.random()
url = 'http://gs.amac.org.cn:10080/amac-infodisc/api/pof/manager?rand={}&page={}&size={}'.format(
random, page, size
)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 UBrowser/5.6.10551.6 Safari/537.36",
"Content-Type": "application/json"
}
print(requests.post(url, json={}, headers=headers).json()['content'][0]['id'])
这会打印101000000409
(第0页为101000000138
)。