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中的wxPython实现最基本的浏览器功能
Apr 14 Python
基于Django filter中用contains和icontains的区别(详解)
Dec 12 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
django Serializer序列化使用方法详解
Oct 16 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
Python list运算操作代码实例解析
Jan 20 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
Python实现AI换脸功能
Apr 10 Python
Python-for循环的内部机制
Jun 12 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
Jul 28 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翻页跳转功能实现方法
2020/11/30 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
JavaScript 事件系统
2010/07/22 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
对numpy中轴与维度的理解
2018/04/18 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
python调试神器PySnooper的使用
2019/07/03 Python
Django的models中on_delete参数详解
2019/07/16 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
Django重设Admin密码过程解析
2020/02/10 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
Python与C/C++的相互调用案例
2021/03/04 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
php优化查询foreach代码实例讲解
2021/03/24 PHP
质检部部长职责
2013/12/16 职场文书
工作保证书范文
2014/04/29 职场文书
计算机网络专业求职信
2014/06/05 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
详解Python函数print用法
2021/06/18 Python
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫