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中多线程thread与threading的实现方法
Aug 18 Python
python脚本设置系统时间的两种方法
Feb 21 Python
简述Python中的进程、线程、协程
Mar 18 Python
python文件拆分与重组实例
Dec 10 Python
Python实现一个带权无回置随机抽选函数的方法
Jul 24 Python
Python 多线程其他属性以及继承Thread类详解
Aug 28 Python
OpenCV模板匹配matchTemplate的实现
Oct 18 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
Python如何绘制日历图和热力图
Aug 07 Python
解决numpy和torch数据类型转化的问题
May 23 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
十天学会php之第八天
2006/10/09 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
php的扩展写法总结
2019/05/14 PHP
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
python读写ini配置文件方法实例分析
2015/06/30 Python
Python算法之图的遍历
2017/11/16 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
Python调用C语言的实现
2019/07/26 Python
python打包成so文件过程解析
2019/09/28 Python
python实现银行账户系统
2021/02/22 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
a标签下载链接的简单实现
2016/09/13 HTML / CSS
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
高中毕业的自我鉴定
2013/12/09 职场文书
便利店的创业计划书
2014/01/15 职场文书
结婚典礼主持词
2015/06/29 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
create-react-app开发常用配置教程
2022/06/25 Javascript
Redis主从复制操作和配置详情
2022/09/23 Redis