网站首页> 后端开发> python> python 爬虫网页登陆的简单实现

python 爬虫网页登陆的简单实现

时间:2020-11-30 10:29:14 阅读:1079次 来源:互联网

相信各位在写 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 爬虫网页登陆的简单实现的文章就介绍到这。

本文地址:https://www.manongw.com/article/350.html

文章来源:转载于PyThon,转载网址为https://learnku.com/articles/52025

版权申明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 ezhongheng@126.com 举报,一经查实,本站将立刻删除。

相关文章
  • 本文主要介绍了Jupyter Notebook安装及使用方法解析的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-12 17:37
  • 本文主要介绍了Python高阶函数与装饰器函数的深入讲解的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-10 16:18
  • 本文主要介绍了Python+OpenCV图像处理——实现轮廓发现的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-10-24 10:20
  • 本文主要介绍了python hmac模块验证客户端的合法性的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-08 08:38
  • 本文主要介绍了Sentry错误日志监控使用方法解析的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-12 16:11
  • 本文主要介绍了python 下载m3u8视频的示例代码的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-12 10:22
  • 本文主要介绍了Python数据可视化常用4大绘图库原理详解的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-10-24 09:27
  • 本文主要介绍了Python操作word文档插入图片和表格的实例演示的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-10-26 14:49
  • 本文主要介绍了Django执行源生mysql语句实现过程解析的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-11-13 10:34
  • 本文主要介绍了python对 MySQL 数据库进行增删改查的脚本的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
    2020-10-22 18:50