私は現在、HTTP 解析が初めてで、Python を使用して HTTP でリクエストを送受信しています。リクエストの送信で扱っているWebサイトはヘッダーとPOSTだけを必要としないため、小さな問題があります。Web ページのボタンをクリックすると、次のリクエストに応答するようにサーバーに指示する JavaScript コードが実行されます。
したがって、通常同じヘッダーと POST リクエストでページを開くと、通常の GET としてページが開かれ、POST で指定したデータは読み取られません。
私のコード:
import cookielib
import urllib
import urllib2
# Store the cookies and create an opener that will hold them
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
# Add our headers
opener.addheaders = [('User-agent', 'RedditTesting'),
('Cookie', '')
]
urllib2.install_opener(opener)
# The action/ target from the form
authentication_url = 'http://plapal.pla/Search.aspx'
# Input parameters we are going to send
payload = {
'_EVENTTARGET': 'btnSearch',
'_VIEWSTATE': 'plapla',
'ctl04%24ddNavigate': 'plapla',
'chkDate': 'on',
'_EVENTARGUMENT': '',
'_LASTFOCUS': '',
'txtResvCode': '',
'txtCustName': '',
'txtFromDate': '27%2F01%2F2013',
'txtToDate': '27%2F09%2F2013',
'ddSearchType': '1',
'ddChannel': '-1',
'ddNetGross': 'NET'
}
# Use urllib to encode the payload
data = urllib.urlencode(payload)
# Build our Request object (supplying 'data' makes it a POST)
req = urllib2.Request(authentication_url, data)
# Make the request and read the response
resp = urllib2.urlopen(req)
contents = resp.read()
print contents
しかし、うまくいきません。そして、ウェブページで検索ボタンをホバーすると、次のようになります。
javascript:WebForm_DoPostBackWithOptions(new%20WebForm_PostBackOptions("btnSearch",%20"",%20true,%20"",%20"",%20false,%20true))
このJSを実行して、実際に投稿データを入力できるようにする方法。