Python urllib提交表单
单击此表单上的“确认订单”按钮的最佳方式是什么?是否可以使用urllib执行“.click()”Python urllib提交表单,python,forms,urllib,Python,Forms,Urllib,单击此表单上的“确认订单”按钮的最佳方式是什么?是否可以使用urllib执行“.click()” <form action="/rewards/redeem/checkout?productId=000800000042&provider=tango" method="post"><input name="__RequestVerificationToken" type="hidden" value="PgnGm_5t1_s23cjcOwADKh6dYsXveK
<form action="/rewards/redeem/checkout?productId=000800000042&provider=tango" method="post"><input name="__RequestVerificationToken" type="hidden" value="PgnGm_5t1_s23cjcOwADKh6dYsXveK5KTEReYTdxC7UWYmLLTPlaYuU5jAbhC8SvoVqF_VcTlzp7zDNYwvV_eBboB4K_mT-m4gwqFDhPRH0s59SGZNnWvui-Vs1NSyLE0" /> <input id="email-input" name="emailPreference" type="hidden" value="shop@gmail.com">
<input name="email" type="hidden" value="">
<input name="shouldUpdateProfile" type="hidden" value="true">
<input name="isModernRewardsUser" type="hidden" value="true">
<input name="firstName" type="hidden" value="">
<input name="lastName" type="hidden" value="">
<input name="challenge.RequestId" type="hidden" value="a008087c-ee8b-41ef-aff2-d02d14b5f258">
<button id="redeem-checkout-review-confirm" class="btn-primary card-button-height padding-left-24 padding-right-24">
<span class="pull-left margin-right-15">CONFIRM ORDER</span>
<span class="pull-left win-icon mee-icon-ChevronRight margin-top-1"></span>
</button>
post
如果您有表单的url,请求可以帮助您提交表单。
url = "https://account.microsoft.com/rewards/redeem/checkout?productId=000800000042"
request = urllib2.Request(url = url, headers = self.httpHeaders)
request.add_header("Referer", bingCommon.BING_URL)
with self.opener.open(request) as response:
referer = response.geturl()
page = helpers.getResponseBody(response)
emailAddress = re.search('input id=\"email-input\" name=\"emailPreference\" type=\"hidden\" value=\"(.+)\"',page).group(1)
token = re.search('input name=\"__RequestVerificationToken\" type=\"hidden\" value=\"(.+)\" /',page).group(1)
challenge = re.search('input name="challenge.RequestId" type="hidden" value="(.+)\"',page).group(1)
print emailAddress, token, challenge
postFields = urllib.urlencode({
"__RequestVerificationToken" : token,
"emailPreference" : emailAddress,
"email" : "",
"shouldUpdateProfile" : "true",
"isModernRewardsUser" : "true",
"firstName" : "",
"lastName" : "",
"challenge.RequestId" : challenge
})
request = urllib2.Request(url, postFields, self.httpHeaders)
#request.add_header("Referer", bingCommon.BING_URL)
with self.opener.open(request) as response:
referer = response.geturl()
page = helpers.getResponseBody(response)