Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求使用验证令牌获取并发布到网站_Python_Post_Get_Token_Python Requests - Fatal编程技术网

Python请求使用验证令牌获取并发布到网站

Python请求使用验证令牌获取并发布到网站,python,post,get,token,python-requests,Python,Post,Get,Token,Python Requests,我正在使用Python3.3和请求库来执行一个基本的POST请求 我想模拟如果您从以下网页向浏览器手动输入信息会发生什么情况:。例如,尝试输入“2.停车罚单”,单击“下一步”,输入1234作为车牌号,输入弗吉尼亚州作为州,然后单击“下一步”,然后选中复选框并单击“下一步” 虽然url是相同的,但输入信息和单击next有多次迭代 目前,我正在对url进行获取,以获取随机生成的字符串,如源代码中的“\uu EVENTVALIDATION”和“\uu VIEWSTATE”的值。然后我用这些信息和其他一

我正在使用Python3.3和请求库来执行一个基本的POST请求

我想模拟如果您从以下网页向浏览器手动输入信息会发生什么情况:。例如,尝试输入“2.停车罚单”,单击“下一步”,输入1234作为车牌号,输入弗吉尼亚州作为州,然后单击“下一步”,然后选中复选框并单击“下一步”

虽然url是相同的,但输入信息和单击next有多次迭代

目前,我正在对url进行获取,以获取随机生成的字符串,如源代码中的“\uu EVENTVALIDATION”和“\uu VIEWSTATE”的值。然后我用这些信息和其他一些信息写了一篇帖子

我是否在代码中使用了如下所示的正确的post有效负载

我的代码是:

import requests
url = r'https://capp.arlingtonva.us/tap/AC_xwTapPay.aspx'

#GET request
s = requests.Session()
r = s.get(url)
text1 = r.text

#getting "__EVENTVALIDATION" value:
eventvalstartstring = r'id="__EVENTVALIDATION" value="'
eventvalstart = text1.find(eventvalstartstring)+len(eventvalstartstring)
end_ind = text1.find('"',eventvalstart)
eventvalidation_string = text1[eventvalstart:end_ind]

#getting "__VIEWSTATE" value:
viewstate_start_string= 'id="__VIEWSTATE" value="'
viewstate_start = text1.find(viewstate_start_string)+len(viewstate_start_string)
end_ind2 = text1.find('"',viewstate_start)
viewstate_string = text1[viewstate_start:end_ind2]

#POST request
payload = {"AC_xwTapCtl:AC_xwTapCtlCtl.xuWrqCtl:BillType":"PKT",
           "__EVENTTARGET":"",
           "__EVENTARGUMENT":"",
           "__LASTFOCUS":"",
           "__VIEWSTATE":viewstate_string,
           "__VIEWSTATEGENERATOR":"C0C9F6BC",
           "__VIEWSTATEENCRYPTED":"",
           "__EVENTVALIDATION":eventvalidation_string,
           "AC_xwTapCtl:AC_xwTapCtlCtl.xuWrqCtl:TagState":'VA',
           "AC_xwTapCtl:AC_xwTapCtlCtl.xuWrqCtl:TagNumber":'1234',
           "AC_xwTapCtl:AC_xwTapCtlCtl.xuWrqCtl:Next1":"Next >",
           "AC_xwTapCtl:scrollTop":'0',
           "AC_xwTapCtl:AC_xwTapCtlCtl.xuWrqCtl:Next2":"Next >",
           "AC_xwTapCtl:xwTap_txtFocus":"AC_xwTapCtl_AC_xwTapCtlCtl.xuWrqCtl_Next1",
           "AC_xwTapCtl_scrollTop":'0',
           "AC_xwTapCtl:AC_xwTapCtlCtl.xuWrqCtl:Next3":"Next >",
           "AC_xwTapCtl:xwTap_txtFocus":"AC_xwTapCtl_AC_xwTapCtlCtl.xuWrqCtl_Next2",
           "AC_xwTapCtl_scrollTop":"0"}

post = s.post(url, data=payload)
text = post.text

谢谢,-K.

在这个阶段,我可能会转而使用beautifulsoup(pip安装BeautifulSoup4)来解析html,以便更轻松地获取所有数据。因为它是.NET(我想)整个页面只有一个表单,所以我们可以抓取所有的输入

import requests
from bs4 import BeautifulSoup

s = requests.Session()

r = s.get('https://capp.arlingtonva.us/tap/AC_xwTapPay.aspx')
soup = BeautifulSoup(r.text)

# grab out all the fields
payload = {i['name']:i.get('value') for i in soup.findAll('input')}
# populate the select field
payload['AC_xwTapCtl:AC_xwTapCtlCtl.xuWrqCtl:BillType'] = 'PKT'

# and submit the next step
r = s.post('https://capp.arlingtonva.us/tap/AC_xwTapPay.aspx', data=payload)    

# then parse / build next request etc
soup = BeautifulSoup(r.text)
payload = {i['name']:i.get('value') for i in soup.findAll('input')}
payload['AC_xwTapCtl:AC_xwTapCtlCtl.xuWrqCtl:TagState'] = 'VA'
payload['AC_xwTapCtl:AC_xwTapCtlCtl.xuWrqCtl:TagNumber'] = 'blah'
r = s.post('https://capp.arlingtonva.us/tap/AC_xwTapPay.aspx', data=payload)    

# rinse and repeat as many times as required...
soup = BeautifulSoup(r.text)