2017-03-16 13 views
0

検索url - http://aptaapps.apta.org/findapt/Default.aspx?UniqueKey=リクエストによる投稿リクエストからの応答が正しくない

郵便番号のデータを取得する必要があります(10017) 投稿リクエストを送信しましたが、検索ページ(検索URLからの応答)は表示されますが、結果のページは表示されません。

マイコード:

# -*- coding: UTF-8 -*- 

import requests 
from bs4 import BeautifulSoup, element 


search_url = "http://aptaapps.apta.org/findapt/Default.aspx?UniqueKey=" 
session = requests.Session() 
r = session.get(search_url) 
post_page = BeautifulSoup(r.text, "lxml") 
try: 
    target_value = post_page.find("input", id="__EVENTTARGET")["value"] 
except TypeError: 
    target_value = "" 

try: 
    arg_value = post_page.find("input", id="__EVENTARGUMENT")["value"] 
except TypeError: 
    arg_value = "" 

try: 
    state_value = post_page.find("input", id="__VIEWSTATE")["value"] 
except TypeError: 
    state_value = "" 

try: 
    generator_value = post_page.find("input", id="__VIEWSTATEGENERATOR")["value"] 
except TypeError: 
    generator_value = "" 

try: 
    validation_value = post_page.find("input", id="__EVENTVALIDATION")["value"] 
except TypeError: 
    validation_value = "" 

post_data = { 
      "__EVENTTARGET": target_value, 
      "__EVENTARGUMENT": arg_value, 
      "__VIEWSTATE": state_value, 
      "__VIEWSTATEGENERATOR": generator_value, 
      "__EVENTVALIDATION": validation_value, 
      "ctl00$SearchTerms2": "", 
      "ctl00$maincontent$txtZIP": "10017", 
      "ctl00$maincontent$txtCity": "", 
      "ctl00$maincontent$lstStateProvince": "", 
      "ctl00$maincontent$radDist": "1", 
      "ctl00$maincontent$btnSearch": "Find a Physical Therapist" 
      } 

headers = { 
     "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", 
     "Accept-Encoding": "gzip, deflate", 
     "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4", 
     "Cache-Control": "max-age=0", 
     "Content-Length": "3025", 
     "Content-Type": "application/x-www-form-urlencoded", 
     "Host": "aptaapps.apta.org", 
     "Origin": "http://aptaapps.apta.org", 
     "Proxy-Connection": "keep-alive", 
     "Referer": "http://aptaapps.apta.org/findapt/default.aspx?UniqueKey=", 
     "Upgrade-Insecure-Requests": "1", 
     "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 
     } 

post_r = session.post(search_url, data=post_data, headers=headers) 
print(post_r.text) 

答えて

0

短い答え:交換する

試してみてください。

post_r = session.post(search_url, data=post_data, headers=headers) 

へ:

post_r = session.post(search_url, json=post_data, headers=headers) 

ロング回答:

POSTメソッドの場合

、中にポストするデータ型の多くの種類があります。このようなform-datax-www-form-urlencodedapplication/jsonfileおよびなどなど

あなたは、ポストデータの種類が何であるかを知っている必要があります。 postmanと呼ばれるすばらしいクロムプラグインがあります。異なるデータ型を試して、正しいデータ型を見つけることができます。

あなたはform-datax-www-form-urlencodedのためならば見つけ、requests.postの正しいパラメータのキーを使用して、パラメータdata後。パラメータjsonはjson形式です。パラメータの詳細を知るためのリクエストのドキュメントを参照することができます。

+0

こんにちはKingname、あなたの答えに感謝します。 データ型は「x-www-form-urlencoded」なので、パラメータは正しいがコードは機能しません。 P .:私はjsonに変更しようとしました。動作しません。 – GiveItAwayNow

+0

OK、 1.ヘッダーから「Content-Length」:「3025」を削除します。再試行してください。 2.手順1がまだうまくいかない場合は、郵便番号をインストールして、正しいリクエストができるかどうかを調べてください。 – Kingname

+0

1.動作しません。 2.インストールしましたが、動作しません。 – GiveItAwayNow

関連する問題