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中的__SLOTS__属性使用示例
Feb 18 Python
Win10下Python环境搭建与配置教程
Nov 18 Python
详解python的webrtc库实现语音端点检测
May 31 Python
python数据结构之链表详解
Sep 12 Python
python实现顺序表的简单代码
Sep 28 Python
让代码变得更易维护的7个Python库
Oct 09 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
python实现诗歌游戏(类继承)
Feb 26 Python
Python基于Dlib的人脸识别系统的实现
Feb 26 Python
Python自动化之UnitTest框架实战记录
Sep 08 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 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+DBM的同学录程序(5)
2006/10/09 PHP
php adodb连接mssql解决乱码问题
2009/06/12 PHP
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
Python CSV模块使用实例
2015/04/09 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python微信公众号开发平台
2018/01/25 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
python raise的基本使用
2020/09/10 Python
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
傲盾软件面试题
2015/08/17 面试题
幼儿园教师考核制度
2014/02/01 职场文书
百日安全活动总结
2014/05/04 职场文书
代领毕业证委托书
2014/08/02 职场文书
委托公证书格式
2015/01/26 职场文书
高中语文教学反思范文
2016/02/16 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
MySQL 字符集 character
2022/05/04 MySQL