Advertisement

python提交表单_python 实现post 表单提交

阅读量:

前一阵十九大召开,公司有任务要通过公司的平台页面添加一批数据(可平台开发人员已离职,种种原因也无法后台数据库批量添加,只能通过页面单个添加),这就造成只能人工一个一个的进行添加。但是项目组人手严重不足,给任务按时的完成带来了丛丛困难。由于接触到了Python 对Python的爬虫技术感上了兴趣,其中理解到Python的requests的post提交登录表单的功能。决定使用Python进行数据添加。经过不懈的努力,终于使用cookies登录方式,成功的提交了multipart/form-data表单数据,终于完成了添加任务。

废话不说了!先上代码

coding:utf-8

import requests

url = 'http://xxxx/xxxx/XNweA.exol' #输入要提交表单的页面url

‘’‘

我相信一般公司内部平台的页面都是需要登录才能进行各种操作的。

为了保持登录状态提交表单,我们就需要cookies

’‘’

cookie = {

'xxx':'xxx',

'userid':'xxx',

'customerType':'xxx',

'curMenuId':'xxx',

'curMenuCode':'xxx',

'ASP.NET_SessionId':'xxx'

} # 带着Cookie向网页发请求\

内部网一般限制不严,我们只要告诉服务器是浏览器访问的即可

headers = {

'Connection': 'keep-alive',

'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36'

}

查看post要提交的数据项,没有的我们就填空

files = {

'__EVENTTARGET': (None, ''),

'__EVENTARGUMENT': (None, ''),

'__VIEWSTATE':

'ctl00MainContenttbxQueryNo': (None, ''),

'ctl00MainContentrblQueryType': (None, '1'),

'ctl00MainContenttbxFlowId': (None, ''),

'ctl00MainContenttbxQueryReason': (None, '111111111111111'),

'ctl00MainContentBtnQuery': (None, '查询客户信息')

}

#使用requests 的post方法提交数据

response = requests.post(url, files=files, headers=headers, cookies=cookie, allow_redirects=True)

print(response.url)

html = response.text

print (html)

问题1, 平台需要登录才能提交数据。为了防止交数据时出现登录提示,使用爬虫中cookies 方式跳过输入登录名和密码,进行页面正常的访问。

问题2, 为了抓取提交表单数据的选项我使用了chrome浏览器的network功能去抓取提交数据项,由于表单页提交后会重定向新的页面,数据一直抓取不到。(经过好多次的调试,仍然无果)后来换了Firefox 终于抓取成功。(百度了下,Chrome确实对重定向的数据无法抓取到,不知道是不是一个bug,所以建议多用几个浏览器对你需要的数据进行抓取测试)

由于工作内容页面比较敏感,所以没有提供截图。大家如果不知道如何获取cookies 和如何找到post的数据项。可以看看下面的连接。这些大神讲的都很详细的

全部评论 (0)

还没有任何评论哟~