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 怎么实现模拟登录,提交表单的主要内容,如果未能解决你的问题,请参考以下文章

Requests库:python实现的简单易用的http库

Request库——Python实现的简单易用的HTTP库

python asyncio 异步 I/O - 实现并发http请求(asyncio + aiohttp)

Python里面requests.post请求怎么添加代理

使用Requests库实现api接口测试(Python)

Python3 requests模块实现模仿浏览器+代理访问