2017-11-12 8 views
1

私はこのウェブサイトスクラップしようとしている:それはイスラエルのウェブサイトがは私がウェブサイトをスクラップしよう、と私は入れません404エラー

https://www.nadlan.gov.il

で、歴史的な不動産取引上のデータを示しています。

検索ボックスには、無料のテキストを検索して、どのような都市/近所に歴史的な取引を表示することができます。

それだけでヘブライ語をサポートしていますので、私は入力します。שכונתגבעתמרדכי、ירושליםGivatモルデハイ周辺に位置し、エルサレムを意味

クロムのネットワークタブをトラッキングすると、実際のデータ(グリッド)を返す関数がGetAssetsAndDealsであり、必要なすべてのデータを含むJSONを返します。

だから私はCURLをコピーし、私はhttps://curl.trillworks.com/を使用して、Pythonコードに変換 - そしてそれは私には、このコードを返します。

import requests 

cookies = { 
    '_ga': 'GA1.3.584052889.1509031917', 
    '_gid': 'GA1.3.66244842.1510507506', 
    'keshet-client-token': 'dvVFgVcuJrTgXPx+w9KtJktxk2wVZXGU1EfZ+3uBhMUYr9ZNWFKIBogGUbb8GjCRqetT2Vf0RRap26mkrYNDp8Nf0ZntyB3fYPNn65i9lrzVYU7bZpI79aqu/D9pYlm4aJj76C5fGsU+ncV5IsysqlqCa0ihRtWhncW6xMxr0l7H4L2OqPk2A5rSCHyAbzdn', 
} 

headers = { 
    'Origin': 'https://www.nadlan.gov.il', 
    'Accept-Encoding': 'gzip, deflate, br', 
    'Accept-Language': 'en-US,en;q=0.8', 
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36', 
    'Content-Type': 'application/json;charset=UTF-8', 
    'Accept': 'application/json, text/plain, */*', 
    'Referer': 'https://www.nadlan.gov.il/', 
    'Connection': 'keep-alive', 
} 

data = '^{^\\^MoreAssestsType^\\^:0,^\\^FillterRoomNum^\\^:0,^\\^GridDisplayType^\\^:0,^\\^ResultLable^\\^:^\\^^\u05E9^\u05DB^\u05D5^\u05E0^\u05EA' 

requests.post('https://www.nadlan.gov.il/KeshetAnnan.REST/Main/GetAssestAndDeals', headers=headers, cookies=cookies, data=data) 

をしかし、私は、Pythonでこのコードを実行すると - 私は404エラーを取得します!

任意のヘルプは理解されるであろう

...私はそれがエンコーディングとは何かを持っていると思いますが、私は変更すべきかわかりません!

答えて

1

実際のリクエストを確認した後、レスポンスを取得するために必要な完全なJSONデータを送信していません。ネットワークログから、POSTエンドポイントに送信するデータを使用して取得することができます。

POST https://www.nadlan.gov.il/Nadlan.REST/Main/GetAssestAndDeals

を:

これは、次のPOSTリクエストで送信された完全なJSONを与えるhttps://www.nadlan.gov.il/Nadlan.REST/Main/GetDataByQuery?query=CONTENT

をGETしかし、何らかの理由でフィールドを変更する必要があります。これはデフォルトで0に設定されているため、404ステータスコードが与えられます。何かを0に設定するとうまくいくようです。ここで

がいっぱいスクリプトです:

# -*- coding: utf-8 -*- 
import requests 
import json 

data = requests.get(
    'https://www.nadlan.gov.il/Nadlan.REST/Main/GetDataByQuery', 
    params={'query': 'שכונת גבעת מרדכי, ירושלים'} 
) 

json_data = data.json() 
json_data['PageNo'] = 1 

r = requests.post(
    'https://www.nadlan.gov.il/Nadlan.REST/Main/GetAssestAndDeals', 
    headers = { 
     'Content-Type': 'application/json;charset=UTF-8' 
    }, 
    data = json.dumps(json_data) 
) 
print(r.status_code) 
print(r.json()) 

私はあなたが

+0

位置や他のフィールドを調整するjson_data仲介結果を変更したいだろうと思いますありがとうございました!!!!それは完全に動作します!何かの理由で –

+0

、それは私のために今働いていない。 それはあなたのために働くのですか? 変更されましたか?それはとても奇妙です... –

+1

私はちょうど今試しました、そして、残りのAPIのベースURLが 'KeshetAnnan.REST'の代わりに' Nadlan.REST'に変更されたようです。これがアップデートかどうかわからない、またはこれが意図されている場合 –

関連する問題