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实现拼接多张图片的方法
Dec 01 Python
python中列表元素连接方法join用法实例
Apr 07 Python
浅析Python中的join()方法的使用
May 19 Python
详解Python中的type()方法的使用
May 21 Python
python简单判断序列是否为空的方法
Jun 30 Python
Python基于有道实现英汉字典功能
Jul 25 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
python开发之for循环操作实例详解
Nov 12 Python
Python人脸识别第三方库face_recognition接口说明文档
May 03 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
python实现杨辉三角的几种方法代码实例
Mar 02 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
JavaSript中变量的作用域闭包的深入理解
2014/05/12 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
python对字典进行排序实例
2014/09/25 Python
Python中的index()方法使用教程
2015/05/18 Python
python实现将内容分行输出
2015/11/05 Python
Python用模块pytz来转换时区
2016/08/19 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
tensorflow的计算图总结
2020/01/12 Python
SmartBuyGlasses中国:唯视良品(销售名牌太阳镜、墨镜和眼镜框)
2017/07/03 全球购物
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
航空大学应届生求职信
2013/11/10 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
开学典礼主持词
2014/03/19 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS