如何使用cookie信息,完成自动登录

在做爬虫任务的时候,我们常常会遇到很多网页必须登录后,才可以开放某些页面。所以登录是爬取网页的第一步。但是,通过post表单(包含用户名和密码)的方法,对于那些不需要输入比较复杂的验证码的网页,可以使用正则表达式将验证码和验证码的ID匹配得出,然后实现自动化登录。但是,现在多部分的网页都是需要输入图片验证码的,所以必须得通过人工的识别图片然后输入验证码。当然,你也可以开发一个深度学习算法,将下载下来的验证码图片进行识别,然后转换为数字进行输入,但是这样就大大的提高了算法的成本,本来你只是要爬取一些简单的信息,却的开发一个实用的验证码识别算法,实属划不来。所以,我们可以通过使用cookie信息,完成自动化输入,而且每次访问网站的时候都不需要输入账号,密码和验证码等信息,相当于你在浏览器上勾选了记住我和自动登录的选项。下面就让我们开始学习如何使用cookie信息完成自动的登录,以爬取豆瓣网内容为例。

一.输入验证码登录

首先,我给出一个不使用cookie信息来登录的例子代码

import requests
import html5lib
import re
from bs4 import BeautifulSoup

s = requests.Session()
url_login = 'http://accounts.douban.com/login' #该网址通过跟踪登录信息可以查看到
#登录的表单
formdata = {
    'redir':'https://www.douban.com',#登录后直接跳转的页面
    'form_email': '2324973098.com', #账户邮箱名(这是我自己乱写的邮箱号码,使用时请换成你自己的邮箱号)
    'form_password': '12345678!',#登录密码(这是我自己乱写的密码,使用时请换成你自己的密码)
    'login': u'登陆'
}
#登录的头信息,为了模拟浏览器登录,属于固定形式
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'}

r = s.post(url_login, data = formdata, headers = headers)
content = r.text
soup = BeautifulSoup(content, 'html5lib')#使用HTML5进行解析网页
captcha = soup.find('img', id = 'captcha_image')#获取验证码图的链接
#判断是否需要验证码,需要则人工输入
if captcha:
    captcha_url = captcha['src']
    re_captcha_id = r'<input type="hidden" name="captcha-id" value="(.*?)"/'#找出验证码的ID,都可以通过跟踪登录过程知道
    captcha_id = re.findall(re_captcha_id, content)
    print(captcha_id)
    print(captcha_url)
    captcha_text = input('Please input the captcha:')#通过将输出的验证码图片网页链接复制到浏览器打开,然后观察验证码,然后输入登录
    formdata['captcha-solution'] = captcha_text
    formdata['captcha-id'] = captcha_id   #加入验证码的信息后,从新构造表单,然后申请登录
    r = s.post(url_login, data = formdata, headers = headers)
with open('contacts.txt', 'w+', encoding = 'utf-8') as f:

    f.write(r.text)

二.使用cookie信息登录

步骤:

1.使用你的账号和密码登录豆瓣主页,并且在登录页勾选记住我的选项。


2.打开浏览器,并按F12键,调出开发者工具,找到network这一选项,选中all,如下图所示:


3.在该业中输入豆瓣主页https://www.douban.com/,然后便可以在下面的监视框内看到登录的信息,如下图:


4.找到最前面的一项,显示的是www.douban.com,单击后,点击header,如下图:


5.在header下面找到cookie信息便可,然后将cookie信息复制到代码中。如下图:



为了保护我的豆瓣的账户信息,所以这里cookie信息进行遮蔽,还望谅解。

代码如下:

import requests

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'}

cookies = {'cookie': 'bid=10gz8L7vrjI; __yadk_uid=QTSUUYvkbEDpprCxnGHo2vDkzhjkNgWB; ll="108288"; 608; ue="2314963088@qq.com"; push_noty_num=0; push_doumail_num=0; __utmv=30149280.17557; __utmt=1; dbcl2="175570305:1c9NM2YiWlg";ue="2314963088@qq.com"; push_noty_num=0; push_doumail_num=0; __utmv=30149280.17557; __utmt=1; dbcl2="175570305:1c9NM2YiWlg"; ck=Yiiv; _pk_id.100001.8cb4=3997ae079664ac75.1508600267.12.1521361971.1520843669.; __utmb=30149280.11.10.1521360343'}

r = requests.get(url, cookies = cookies, headers = headers)
# print(r.text)
with open('douban_2.txt', 'wb+') as f:

    f.write(r.content)


到这里为止,你就完成了使用cookie的所有步骤,以后想再次访问该网站则不在需要输入验证码等信息了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud 学习笔记(1 / 3)

Spring Cloud 学习笔记&#xff08;2 / 3&#xff09; Spring Cloud 学习笔记&#xff08;3 / 3&#xff09; ---01_前言闲聊和课程说明02_零基础微服务架构理论入门03_第二季Boot和Cloud版本选型04_Cloud组件停更说明05_父工程Project空间新建06_父工程pom文件07_复习Depend…

后缀树/后缀数组

字典树&#xff1a;https://blog.csdn.net/hebtu666/article/details/83141560 后缀树&#xff1a;后缀树&#xff0c;就是把一串字符的所有后缀保存并且压缩的字典树。 相对于字典树来说&#xff0c;后缀树并不是针对大量字符串的&#xff0c;而是针对一个或几个字符串来解决…

kaggle(02)-房价预测案例(基础版)

房价预测案例 Step 1: 检视源数据集 import numpy as np import pandas as pd读入数据 一般来说源数据的index那一栏没什么用&#xff0c;我们可以用来作为我们pandas dataframe的index。这样之后要是检索起来也省事儿。 有人的地方就有鄙视链。跟知乎一样。Kaggle的也是个处…

为什么Python中整型不会溢出

前言 本次分析基于 CPython 解释器&#xff0c;python3.x版本 在python2时代&#xff0c;整型有 int 类型和 long 长整型&#xff0c;长整型不存在溢出问题&#xff0c;即可以存放任意大小的整数。在python3后&#xff0c;统一使用了长整型。这也是吸引科研人员的一部分了&am…

如何使用github中的pull request功能?

* pull request是社会化编程的象征&#xff0c;通过这个功能&#xff0c;你可以参与到别人开发的项目中&#xff0c;并做出自己的贡献。pull request是自己修改源代码后&#xff0c;请求对方仓库采纳的一种行为*–《github入门与实践》 下面具体说一下github中使用pull reque…

「假装努力」

有多少人在「假装努力」&#xff1f; 又有多少人在「真正成长」&#xff1f; 再努力努力 回想起当年毕业后&#xff0c;在北京和室友合租的日子。 那时&#xff0c;我在工作&#xff0c;室友在培训。 一天&#xff0c;我下班回来&#xff0c;听见他在电话里和家人争吵&…

如何阅读论文?

本文主要讲述了如何才能高效的阅读一篇论文&#xff01;&#xff01;

贪吃蛇js

python都学不懂&#xff0c;c又不会&#xff0c;只能写写js来维持生活了。555555 js&#xff1a; window.onload function() {var wrap document.getElementsByClassName("wrap")[0];var uls document.getElementsByClassName("sbody")[0];var hand …

Android studio安装过程中入的坑的记录与记录

Android studio安装过程中入的坑的记录与记录 * 由于最近项目的需求&#xff0c;所以最近一直在配置安卓的开发环境&#xff0c;之前用的是Eclipse ADT的模式开发的&#xff0c;配置环境也花了一些时间&#xff0c;但是由于谷歌大力扶持它的亲儿子Android Studio&#xff0c;…

动态规划基础水题提纲

提纲 汉诺塔 汉诺塔&#xff1a;汉诺塔&#xff08;又称河内塔&#xff09;问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新…

数据结构课上笔记8

串的概念&#xff1a;串&#xff08;字符串&#xff09;&#xff1a;是由 0 个或多个字符组成的有限序列。 通常记为&#xff1a;s ‘ a1 a2 a3 … ai …an ’ ( n≥0 )。 串的逻辑结构和线性表极为相似。 一些串的类型&#xff1a; 空串&#xff1a;不含任何字符的串&#x…

数据结构课上笔记9

数组&#xff1a;按一定格式排列起来的具有相同类型的数据元素的集合。 二维数组&#xff1a;若一维数组中的数据元素又是一维数组结构&#xff0c;则称为二维数组。 同理&#xff0c;推广到多维数组。若 n -1 维数组中的元素又是一个一维数组结构&#xff0c;则称作 n 维数组…

pySerial -- Python的串口通讯模块

pySerial Overview This module encapsulates the access for the serial port. It provides backends for Python running on Windows, Linux, BSD (possibly any POSIX compliant system), Jython and IronPython (.NET and Mono). The module named “serial” automatica…

串的堆分配实现

今天&#xff0c;线性结构基本就这样了&#xff0c;以后&#xff08;至少是最近&#xff09;就很少写线性基础结构的实现了。 串的类型定义 typedef struct {char *str;int length; }HeapString; 初始化串 InitString(HeapString *S) {S->length0;S->str\0; } 长度 …

Numpy 入门

Numpy 入门 Numpy简介 官网链接&#xff1a;http://www.numpy.org/NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算&#xff0c;此外也针对数组运算提供大量的数学函数库 Numpy的基本功能 快速高效的多维数组对象ndarray用于对数组执行元素级计算以…

数据结构课上笔记10

树 树的定义&#xff1a;树(Tree)是 n(n≥0)个结点的有限集。若 n0&#xff0c;称为空树&#xff1b;若 n > 0&#xff0c;则它满足如下两个条件&#xff1a; (1) 有且仅有一个特定的称为根 (Root) 的结点&#xff1b; (2) 其余结点可分为 m (m≥0) 个互不相交的有限…

pandasStudyNoteBook

pandas 入门培训 pandas简介 - 官网链接&#xff1a;http://pandas.pydata.org/ - pandas pannel data data analysis - Pandas是python的一个数据分析包 , Pandas最初被作为金融数据分析工具而开发出来&#xff0c;因此&#xff0c;pandas为时间序列分析提供了很好的支持 …

最大搜索子树

给定一个二叉树的头结点&#xff0c;返回最大搜索子树的大小。 我们先定义结点&#xff1a; public static class Node {public int value;public Node left;public Node right;public Node(int data) {this.value data;}} 分析&#xff1a; 直接判断每个节点左边小右边大是…

二叉树最长路径

分析&#xff1a; 暴力求每一段距离也可。 对于以本节点为根的二叉树&#xff0c;最远距离有三种可能&#xff1a; 1&#xff09;最远路径来自左子树 2 &#xff09;最远路径来自右子树&#xff08;图示与左子树同理&#xff09; 3&#xff09;最远路径为左右子树距离根最远…

判断完全二叉树

完全二叉树的定义: 一棵二叉树&#xff0c;除了最后一层之外都是完全填充的&#xff0c;并且最后一层的叶子结点都在左边。 https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91/7773232?fraladdin 百度定义 思路&#xff1a;层序遍历二叉树 如果…