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遍历数组的方法小结
Apr 30 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
BP神经网络原理及Python实现代码
Dec 18 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
Python3 使用pillow库生成随机验证码
Aug 26 Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 Python
python二元表达式用法
Dec 04 Python
Python箱型图处理离群点的例子
Dec 09 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
Feb 11 Python
python高级特性简介
Aug 13 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 16 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
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
解析thinkphp中的导入文件标签
2013/06/20 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
比较完整的微信开发php代码
2016/08/02 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
python基础教程之常用运算符
2014/08/29 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
TCP/IP的分层模型
2013/10/27 面试题
公司清洁工岗位职责
2013/12/14 职场文书
男方父母婚礼答谢词
2014/01/25 职场文书
国家助学金获奖感言
2014/01/31 职场文书
年终晚会主持词
2014/03/25 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
六一亲子活动感想
2015/08/07 职场文书
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers