我目前是 HTTP 解析的新手,我正在使用 python 在 HTTP 中发送和接收请求。我只是有一个小问题,因为我在发送请求时处理的网站不仅需要 Headers 和 POST。当我单击网页上的按钮时,会执行一个 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 以便我可以实际输入我的帖子数据。