2017-04-14 1 views
0

Ich verwende folgenden Code, um das Web "http://gs.amac.org.cn:10080/amac-infodisc/res/pof/manager/index.html" zu scrapieren. Um das Web zu scrapieren, posten ich die Daten im JSON-Format. Es funktioniert einwandfrei, um json-Inhalte zu beantworten. Das Merkwürdige ist, dass es immer den gleichen Inhalt gibt, egal welche "Seiten" Nummer es ist oder welche "Größe" es ist. Wer sich für diese Frage interessiert, kann versuchen die "Seiten" Nummer in "Postdata" zu ändern und zu sehen die gleiche "id" hat geantwortet.Python Post andere Seitenzahl den gleichen Inhalt zurück

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"] 

Antwort

0

Das Problem ist, dass die Argumente für die Seite nicht als Post-Daten gesendet, sondern als Abfrage Argumente:

request analysis

Ändern des Argumenttypen behebt das Problem:

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']) 

Dies druckt 101000000409 (101000000138 für Seite 0).

+0

erstaunliche Antwort, es funktioniert gut, danke –

Verwandte Themen