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使用Tkinter显示网络图片的方法
Apr 24 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
python 整数越界问题详解
Jun 27 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
基于Python新建用户并产生随机密码过程解析
Oct 08 Python
python 遍历pd.Series的index和value
Nov 26 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
Aug 04 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
python中绕过反爬虫的方法总结
Nov 25 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常用文件操作函数汇总
2014/11/22 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
jQuery.extend 函数的详细用法
2012/06/27 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
2016/09/06 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
获取python文件扩展名和文件名方法
2018/02/02 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
医药销售求职信范文
2014/02/01 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
商标侵权律师函
2015/05/27 职场文书
小学数学教师研修日志
2015/11/13 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
MySQL数据库简介与基本操作
2022/05/30 MySQL