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 相关文章推荐
记录Django开发心得
Jul 16 Python
Python实现测试磁盘性能的方法
Mar 12 Python
Python的pycurl包用法简介
Nov 13 Python
Python利用splinter实现浏览器自动化操作方法
May 11 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
Django数据库类库MySQLdb使用详解
Apr 28 Python
Django 解决阿里云部署同步数据库报错的问题
May 14 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
Aug 17 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
PHP排序算法类实例
2015/06/17 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
[02:48]DOTA2超级联赛专访海涛:你们的选择没有错
2013/06/07 DOTA
Python利用Beautiful Soup模块修改内容方法示例
2017/03/27 Python
Python中表示字符串的三种方法
2017/09/06 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
Python pandas库中的isnull()详解
2019/12/26 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
关于.NET, HTML的五个问题
2012/08/29 面试题
初中物理教学反思
2014/01/14 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
增值税发票丢失证明
2015/06/19 职场文书
2016年国陪研修感言
2015/11/18 职场文书
导游词之河北野三坡
2019/12/11 职场文书
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android