2017-02-21 12 views
0

私はサイトからデータを取得する必要があります。このデータを取得するには、ユーザーはまず郵便番号を入力する必要があります。ソースコードを調べた後、私は次のようなことを知った。投稿リクエストは空の文字列(python)を返します

応答結果(私はすべての後に必要なものである

{PostCodePK: 16666, PostCode: "7468", City: "MACQUARIE HEADS", State: "TAS", Country: "AUST",…} 
1 
: 
{PostCodePK: 16667, PostCode: "7468", City: "STRAHAN", State: "TAS", Country: "AUST",…} 

要求データ。

Request URL:http://www.lucasmill.com/Resources/ws-common.aspx 
Request Method:POST 
Status Code:200 OK 
Remote Address:111.67.1.113:80 
Response Headers 
view source 
Cache-Control:private 
Content-Length:321 
Content-Type:application/json; charset=utf-8 
Date:Tue, 21 Feb 2017 20:19:26 GMT 
Expires:Tue, 21 Feb 2017 20:19:26 GMT 
Server:Microsoft-IIS/8.5 
Set-Cookie:dnn_IsMobile=False; path=/; HttpOnly 
Request Headers 
view source 
Accept:application/json, text/javascript, */*; q=0.01 
Accept-Encoding:gzip, deflate 
Accept-Language:en-US,en;q=0.8,ru;q=0.6,uk;q=0.4 
Connection:keep-alive 
Content-Length:18 
Content-Type:application/json; charset=UTF-8 
Cookie:.ASPXANONYMOUS=ptTlH_jC0gEkAAAAZTU4MTA5NTItZmNlZS00MzRjLThmYTgtMWZkYWNkOTEwZmY00; dnn_IsMobile=False; language=en-AU; __utmt=1; __utma=97280258.254723646.1487697408.1487697408.1487708346.2; __utmb=97280258.1.10.1487708346; __utmc=97280258; __utmz=97280258.1487697408.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) 
DNN-Service:true 
DNN-Service-Method:GetTown 
DNT:1 
Host:www.lucasmill.com 
Origin:http://www.lucasmill.com 
Referer:http://www.lucasmill.com/Sawmilling-Contractors 
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 
X-Requested-With:XMLHttpRequest 
Request Payload 
{ 'param':'7468' } 

ここは私のPythonコードです。

import requests 
r = requests.post('http://www.lucasmill.com/Resources/ws-common.aspx',data={  'param':'7468' }) 
print(r.text) 

しかし、私が応答として受け取るのは空の文字列です。 どこが間違っていますか?

+0

あなたの投稿要求は' curl'で試しても返されません。あなたのPythonコードは完璧です。 – favoretti

+0

それでは、どうすれば私が必要とする回答結果が得られますか?適切な応答データを得るのに十分なこのサイトからの応答データではありませんか? –

+0

これまでのところ私はその正確な反応を抽出することができませんでした。私はブラウザでそれを参照してくださいtho。私にしばらくお待ちください、私は何かを考え出すかもしれません。 – favoretti

答えて

0

特定のアプリケーションで必要となるいくつかの余分なヘッダーを追加する必要があります。 あなたがリクエストヘッダを見れば、ブラウザでダンプ、あなたは以下を参照してくださいすることができます

だから、

enter image description here

、それは次のようになりますPythonのために翻訳:

import json 
import requests 

headers = { 
     'DNN-Service': 'true', 
     'DNN-Service-Method': 'GetTown', 
} 

r = requests.post('http://www.lucasmill.com/Resources/ws-common.aspx',data=json.dumps({'param':7468}), headers=headers) 
print(r.text) 

出力

[なし] [22:28:30] vlazarenko @ alluminium(〜/ tests)$ python post.py [{"P ostCodePK ":16666、" PostCode ":" 7468 "、" City ":" MACQUARIE HEADS "、" State ":" TAS "、" Country ":" AUST "、" Latitude ":" - 42.2149353 "、" Longitude ":" 145.1951436 "、" CanGeocode ":true}、{" PostCodePK ":16667、" PostCode ":" 7468 "、" City ":" STRAHAN "、" State ":" TAS "、" Country ":" AUST "、" Latitude ":" - 42.1534771 "、"経度 ":" 145.3281242 "、" CanGeocode ":true}]

+0

どのヘッダーを使用するのか、どのヘッダーを使用するのかは、どのように分かりますか?あなたはそれらの半分だけを使用したように見えます。 –

+0

@BillyJhonも不要なものをいくつか削除しました。さて、試行錯誤で。基本的に 'DNN- *'ヘッダーは標準ではないので、私の注意を引きました。私はフェンスの反対側のアプリケーションがそれらを期待していると私は正しかったと思っています:) – favoretti

+0

実際には、実際にはそれらの2つだけが必要です。 – favoretti

関連する問題