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生成日历实例解析
Aug 21 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
Dec 14 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
Python文件读写保存操作的示例代码
Sep 14 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
wxPython修改文本框颜色过程解析
Feb 14 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
虚拟机下载python是否需要联网
Jul 27 Python
pandas中DataFrame重置索引的几种方法
May 24 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
php 应用程序安全防范技术研究
2009/09/25 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
php实现的漂亮分页方法
2014/04/17 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
Python中Threading用法详解
2017/12/27 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
Java基础面试题
2012/11/02 面试题
在职研究生自我鉴定
2013/10/16 职场文书
国贸专业个人求职信范文
2014/01/08 职场文书
保护环境倡议书范文
2014/05/13 职场文书
给校长的建议书100字
2014/05/16 职场文书
公司踏青活动方案
2014/08/16 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书
研讨会致辞
2015/07/31 职场文书
python中 Flask Web 表单的使用方法
2022/05/20 Python