2017-02-21 7 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

Глядя ... До сих пор я не смог извлечь этот точный ответ. Я вижу это в браузере. Дайте мне несколько минут, я мог бы кое-что понять. – 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) 

Выход:

[none] [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": истинно}, { "PostCodePK": 16667, "салонов Почтовый": "7468", "Город": "Стрейхен", "государство": "ТАС", "Страна": "AUST "," Широта ":" - 42.1534771 "," Долгота ":" 145.3281242 "," CanGeocode ": true}]

+0

Как узнать, какой заголовок использовать, а какой из них оставить? Похоже, вы использовали только половину из них. –

+0

@BillyJhon удалил некоторые ненужные тоже. Ну, проб и ошибок. В основном заголовки DNN- * 'привлекли мое внимание, поскольку они не являются стандартными. Я предположил, что приложение с другой стороны забора ожидает тех, и я был прав :) – favoretti

+0

На самом деле, на самом деле нужны только те 2. – favoretti

Смежные вопросы