python 爬虫网页登陆的简单实现


Posted in Python onNovember 30, 2020

相信各位在写 python 爬虫的时候会在爬取网站时遇到一些登陆的问题,比如说登陆时遇到输入验证码比如说登录时遇到图片拖拽等验证,如何解决这类问题呢?一般有两种方案。

使用 cookie 登陆

我们可以通过使用 cookies 登陆,首先获取浏览器的 cookie,然后利用 requests 库直接登陆 cookie,服务器就会认为你是一个真实登陆用户,所以就会返回给你一个已登陆的状态,这个方法是很好用的,基本上绝大部分的需要验证码登录的网站都可以通过 cookie 登录来解决,

#! -*- encoding:utf-8 -*-
  import requests
  import random
  import requests.adapters

  # 要访问的目标页面
  targetUrlList = [
    "https://httpbin.org/ip",
    "https://httpbin.org/headers",
    "https://httpbin.org/user-agent",
  ]

  # 代理服务器
  proxyHost = "t.16yun.cn"
  proxyPort = "31111"

  # 代理隧道验证信息
  proxyUser = "username"
  proxyPass = "password"

  proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
    "host": proxyHost,
    "port": proxyPort,
    "user": proxyUser,
    "pass": proxyPass,
  }

  # 设置 http和https访问都是用HTTP代理
  proxies = {
    "http": proxyMeta,
    "https": proxyMeta,
  }

  # 访问三次网站,使用相同的Session(keep-alive),均能够保持相同的外网IP
  s = requests.session()

  # 设置cookie
  cookie_dict = {"JSESSION":"123456789"}
  cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)
  s.cookies = cookies

  for i in range(3):
    for url in targetUrlList:
      r = s.get(url, proxies=proxies)
      print r.text
若存在验证码,此时采用resp**e = requests_session.post(url=url_login, data=data)是不行的,做法应该如下:

resp**e_captcha = requests_session.get(url=url_login, cookies=cookies)
resp**e1 = requests.get(url_login) # 未登陆
resp**e2 = requests_session.get(url_login) # 已登陆,因为之前拿到了Resp**e Cookie!
resp**e3 = requests_session.get(url_results) # 已登陆,因为之前拿到了Resp**e Cookie!

模拟登陆

这里不得不说一句老话,前人种树,后人乘凉,当时我想爬一下知乎盐选的文章,但是卡在了登陆这块,没想到搜索下来发现了一个模拟登陆的库,非常好用,不过本着好东西不分享防和谐的原则,就不在这里说了。

具体思路也就是通过 requests 来进行模拟登陆,然后返回一下验证码,之后传入验证码即可登陆成功了。

到此这篇关于python 爬虫网页登陆的简单实现的文章就介绍到这了,更多相关python 爬虫登陆内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现的批量下载RFC文档
Mar 10 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
tensorflow实现softma识别MNIST
Mar 12 Python
python读取和保存视频文件
Apr 16 Python
django manage.py扩展自定义命令方法
May 27 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
基于python连接oracle导并出数据文件
Apr 28 Python
Keras - GPU ID 和显存占用设定步骤
Jun 22 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
python从ftp获取文件并下载到本地
Dec 05 Python
解决python的空格和tab混淆而报错的问题
Feb 26 Python
Prometheus开发中间件Exporter过程详解
Nov 30 #Python
python实现猜拳游戏项目
Nov 30 #Python
Python解析微信dat文件的方法
Nov 30 #Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 #Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 #Python
Python 微信公众号文章爬取的示例代码
Nov 30 #Python
python爬虫工具例举说明
Nov 30 #Python
You might like
给多个地址发邮件的类
2006/10/09 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
2020/11/22 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
js 编写规范
2010/03/03 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
多个$(document).ready()的执行顺序实例分析
2014/07/26 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
Pycharm配置远程调试的方法步骤
2018/12/17 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
python匿名函数用法实例分析
2019/08/03 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
POP文化和音乐灵感的时尚:Hot Topic
2019/06/19 全球购物
英语系本科生个人求职信
2013/09/21 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
我的梦想演讲稿
2014/04/30 职场文书
社区健康教育工作方案
2014/06/03 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
捐助倡议书
2015/01/19 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
python 中的@运算符使用
2021/05/26 Python
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP