找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 85|回复: 0

解决网络爬虫登陆问题

11

主题

12

帖子

12

积分

贫民

积分
12
laical 发表于 2020-11-13 17:20:39 | 显示全部楼层 |阅读模式
网络爬虫在爬取网站时会遇到一些登陆的问题,登陆过程中会遇到输入验证码,如何解决爬虫解决登陆和输入验证码?一般有两种方案。
1、使用cookie登陆
使用cookies登陆,获取浏览器的cookies,然后利用requests 库直接登陆cookies,服务器会认为你是一个真实登陆用户,所以就会返回给你一个已登陆的内容。因此,需要验证码的情况可以使用带验证码登陆的cookie解决。
  1.     #! -*- encoding:utf-8 -*-
  2.     import requests
  3.     import random
  4.     import requests.adapters

  5.     # 要访问的目标页面
  6.     targetUrlList = [
  7.         "https://httpbin.org/ip",
  8.         "https://httpbin.org/headers",
  9.         "https://httpbin.org/user-agent",
  10.     ]

  11.     # 代理服务器(产品官网 www.16yun.cn)
  12.     proxyHost = "t.16yun.cn"
  13.     proxyPort = "31111"

  14.     # 代理隧道验证信息
  15.     proxyUser = "username"
  16.     proxyPass = "password"

  17.     proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
  18.         "host": proxyHost,
  19.         "port": proxyPort,
  20.         "user": proxyUser,
  21.         "pass": proxyPass,
  22.     }

  23.     # 设置 http和https访问都是用HTTP代理
  24.     proxies = {
  25.         "http": proxyMeta,
  26.         "https": proxyMeta,
  27.     }

  28.     # 访问三次网站,使用相同的Session(keep-alive),均能够保持相同的外网IP
  29.     s = requests.session()

  30.     # 设置cookie
  31.     cookie_dict = {"JSESSION":"123456789"}
  32.     cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)
  33.     s.cookies = cookies

  34.     for i in range(3):
  35.         for url in targetUrlList:
  36.             r = s.get(url, proxies=proxies)
  37.             print r.text
复制代码
若存在验证码,此时采用resp**e = requests_session.post(url=url_login, data=data)是不行的,做法应该如下:
  1. resp**e_captcha = requests_session.get(url=url_login, cookies=cookies)
  2. resp**e1 = requests.get(url_login) # 未登陆
  3. resp**e2 = requests_session.get(url_login) # 已登陆,因为之前拿到了Resp**e Cookie!
  4. resp**e3 = requests_session.get(url_results) # 已登陆,因为之前拿到了Resp**e Cookie!
复制代码
2、强行登陆
使用requests登陆,requests的好处是速度快。
使用requests登陆一般分为几步:
1、发出请求时使用sess
2、需要把验证码图片下载到本地保存
3、需要通过验证码
4、使用post请求访问登陆网站

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表