python http requests 怎么实现模拟登录,提交表单
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python http requests 怎么实现模拟登录,提交表单相关的知识,希望对你有一定的参考价值。
以下实例是一个完整的代码,实现了从博客获取内容发布至百度,分别实践抓取博客内容、模拟登录、表单提交这几步;#注意,以下程序是一个完全程序,如果只需要实现模拟登录,提交表单,删除抓取部分即可,相关的代码已经清楚标注,可以根据自己实际情况修改。
代码如下:
# -*- coding: utf-8 -*-
import re
import urllib
import urllib2
import cookielib
#第一步,获取博客标题和正文 ,“IP”可以改为实际地址;
url = "IP"
sock = urllib.urlopen(url)
html = sock.read()
sock.close()
content = re.findall(\'(?<=blogstory">).*(?=<p class="right artical)\', html, re.S)
content = re.findall(\'<script.*>.*</script>(.*)\', content[0], re.S)
title = re.findall(\'(?<=<title>)(.*)-.* - CSDN.*(?=</title>)\', html, re.S)
#根据文章获取内容新建表单值
blog = \'spBlogTitle\': title[0].decode(\'utf-8\').encode(\'gbk\'), #文章标题
\'spBlogText\': content[0].decode(\'utf-8\').encode(\'gbk\'),#文章内容
\'ct\': "1",
\'cm\': "1"
del content
del title
#第二步,模拟登录百度;
cj = cookielib.CookieJar()
#登陆百度的用户名和密码
post_data = urllib.urlencode(\'username\': \'[username]\', \'password\': \'[password]\', \'pwd\': \'1\')
#登录地址路径
path = \'https://passport.baidu.com/?login\'
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [(\'User-agent\', \'Opera/9.23\')]
urllib2.install_opener(opener)
req = urllib2.Request(path, post_data)
conn = urllib2.urlopen(req)
#获取百度登陆认证令牌
bd = urllib2.urlopen(urllib2.Request(\'http://hi.baidu.com/[username]/creat/blog\')).read()
bd = re.findall(\'(?<=bdstoken\\" value=\\").*(?=ct)\', bd, re.S)
blog[\'bdstoken\'] = bd[0][:32]
#设置分类名
blog[\'spBlogCatName\'] = \'php\'
#第四步,比较表单,提交表单; req2 = urllib2.Request(\'http://hi.baidu.com/[username]/commit\', urllib.urlencode(blog))
#最后,查看表单提交后返回内容,检验;
print urllib2.urlopen(req2).read()
#注意:将[username]/[password]替换为自己真实用户名和密码
参考技术A import requests
url = 'https://***'
postdata =
'username' : '***',
'password' : '***',
s = requests.session()
response = s.post(urls, data = postdata)
PS:星号换成你你实际的url和用户名密码本回答被提问者和网友采纳 参考技术B import requests
url = 'https://***'
postdata =
'username' : '***',
'password' : '***',
s = requests.session()
response = s.post(urls, data = postdata)
PS:星号换成你你实际的url和用户名密码
Requests库:python实现的简单易用的http库
1、get请求: get(url, params, headers)
2、json 解析
3、content 获取二进制内容
4、headers 添加
5、post请求:post(url,data,headers)
6、files 文件上传
7、cookie 获取
8、session 会话维持--模拟登录
9、proxies 代理设置
10、timeout 超时设置
11、exception 异常处理
以上是关于python http requests 怎么实现模拟登录,提交表单的主要内容,如果未能解决你的问题,请参考以下文章