Python网络爬虫之模拟登陆

Python 爬虫模拟登录方法汇总 摘要: 在进行爬虫时,除了常见的不用登录就能爬取的网站,还有一类需要先登录的网站。比如豆瓣、知乎,以及上一篇文章中的桔子网。这一类网站又可以分为:只需输入帐号密码、除了帐号密码还需输入或点击验证码等类型。本文以只需输入账号密码就能登录的桔子网为例,介绍模拟登录常用的 3 种方法。 POST 请求方法:需要在后台获取登录的 URL并填写请求体参数,然后 POST 请求登录,相对麻烦; 添加 Coo... 阅读详情

为什么要模拟登陆

Python网络爬虫应用十分广泛,但是有些网页需要用户登陆后才能获取到信息,所以我们的爬虫需要模拟用户的登陆行为,在登陆以后保存登陆信息,以便浏览该页面下的其他页面。

保存用户信息

模拟登陆后有两种方法可以保存用户信息,通过Session来保存登陆信息或者通过Cookie来保存登陆信息

一、Session的用法

# 导入requests模块
import requests 
# 通过requests的Session来请求网页
s = requests.Session()  
r = s.post(url, headers=headers)

二、Cookie的用法

import urllib.request, http.cookiejar
# 初始化Cookie
cookie = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
# 把opener配置为全局 当然也可以不配置全局通过opener来请求网页
urllib.request.install_opener(opener)

模拟登陆实践

我们以豆瓣网为例模拟用户登陆,然后爬取登陆后的用户界面

(1)找到请求表单

登陆一般是通过Post请求来实现的,其传递参数为一个表单,如果要成功登陆,我们需要查看该表单传递了哪些内容,然后构造表单做Post请求。怎么获取表单了,我们只需要打开浏览器右键查看,然后输入账号密码,点击登陆查看其NetWork中的请求,找到表单信息即可(推荐使用谷歌浏览器),该信息中还能找到请求的url。

表单信息

URL

(2)构建表单

表单的key值我们可以通过右键页面检查页面源代码,在页面源码中获得静态的值(还有些动态信息需要手动获取)

formdata = {
    'redir': 'https://www.douban.com',
    'form_email': '账号',
    'form_password': '密码',
    'login': u'登陆'
}

(3)伪装成浏览器进行登录

我们只需要给请求添加上Headers即可

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

(4)获取验证码

第二步的表单其实还不完整,还差两条跟验证码有关的信息,这两条信息是动态变化的,所以我们要手动获取

r = s.post(url_login, headers=headers)
content = r.text
soup = BeautifulSoup(content, 'html.parser')
captcha = soup.find('img', id='captcha_image')#当登陆需要验证码的时候
if captcha:
    captcha_url = captcha['src']
    re_captcha_id = r'<input type="hidden" name="captcha-id" value="(.*?)"/'
    captcha_id = re.findall(re_captcha_id, content)
    print(captcha_id)
    print(captcha_url)  # 打印验证码url
    captcha_text = input('Please input the captcha:')  # 手动输入验证码
    formdata['captcha-solution'] = captcha_text # 添加表单信息
    formdata['captcha-id'] = captcha_id

(5)登录

r = s.post(url_login, data=formdata, headers=headers) # 将表单信息传入参数中请求页面即可登录

完整代码

# -*- coding: utf-8 -*-
import requests
import re
from bs4 import BeautifulSoup

s = requests.Session()
url_login = 'https://accounts.douban.com/login'

formdata = {
    'redir': 'https://www.douban.com',
    'form_email': '账号',
    'form_password': '密码',
    'login': u'登陆'
}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/55.0.2883.87 Safari/537.36'}

r = s.post(url_login, data=formdata, headers=headers)
content = r.text
soup = BeautifulSoup(content, 'html.parser')
captcha = soup.find('img', id='captcha_image')#当登陆需要验证码的时候
if captcha:
    captcha_url = captcha['src']
    re_captcha_id = r'<input type="hidden" name="captcha-id" value="(.*?)"/'
    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.html', 'w+', encoding='utf-8') as f:
    f.write(r.text)

运行结果

登陆成功

总结

说了这么多,旨在告诉大家Python这个类目无论是功能性、还是上手程度都碾压其他语言,作为最适合零基础入门的编程语言,想要学习自然不能纸上谈兵,还得沉下心来深入的研究和学习。

只告诉大家学什么但是不给予方向的行为无异于耍流氓,这里也是分享我多年收藏的技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括:
在这里插入图片描述
上述这份完整版的Python全套学习资料已经上传优快云官方,如果需要可以微信扫描下方优快云官方认证二维码 即可领取

👉[[优快云大礼包:《python安装包&全套学习资料》免费分享]](安全链接,放心点击)

Python简单实现登录功能 阅读详情

相关推荐

Python 网络爬虫之模拟登陆合集 !

摘要: 之前我们爬取的实习僧、糗事百科、网易新闻都是不需要登陆,不需要你去做账号、Cookies、Session等等,顶多只需要一个 headers (请求头),但还有一类是需要:你(注册)账号登陆才能进行后续的操作。 例如:淘宝、知乎、豆瓣之类的需要你登陆的。 我们之前又整合一些 requests 库 提供 http 的所有基本请求方式: Pyt...

Pythoncxy的博客 694

爬虫实战篇(模拟登录)

爬虫实战篇(模拟登录) 阅读目录 (1)、登录实质 (2)、什么是模拟登陆 (3)、实现方式 (4)、实例讲解(模拟登录去哪儿网)–这里我们用第二种实现方式 (1)、登录实质 互联网上的部分网站需要登录后方能访问,当我们打开网页并登录,就会在客户端生成Cookies(相当于个人身份证)信息,Cookies中包含了SessionId信息,登录后的请求都会带上Cookies发送给服务器,服务器会根据Cookies判断出对应的SessionID,进而找到会话,从而判断用户是否师登录状态,从而是否给用户响应。 (2

一只梦想当全栈工程师的程序猿 5540

使用python爬虫模拟12306登陆

使用python爬虫模拟12306登陆   需要用到requests库函数,下载requests库函数地方法:直接在命令行输入以下代码就可以了就可以了。 pip install requests 模拟登陆的一般步骤:伪装爬虫–&amp;gt;实例化一个session–&amp;gt;访问登陆的网络求情–&amp;gt;获取验证码(一般登陆都会有验证码验证)–&amp;gt;验证账号密码–&amp;gt;获取token验证–&amp;gt;登陆...

你呢的博客 3049

爬虫之模拟登录

代码中,使用了requests的Session模块。网站会把每一个会话的ID(Session ID)保存在浏览器的Cookies中用来标识用户的身份。在已经登录知乎的情况下,打开Chrome的开发者工具,定位到“Network”选项卡,然后刷新网页,在加载的内容中随便选择一项,然后看右侧的数据,从Request Headers中可以找到Cookie。通过已经登录的Cookies,可以让爬虫绕过登录过程,直接进入登录以后的页面。使用Cookie来登录网页,不仅可以绕过登录步骤,还可以绕过网站的验证码。

seanyang_的博客 2241

[python爬虫]模拟登陆扇贝单词

登完了教务处,就试试登陆别的吧,这次选择的是扇贝单词的网页版,貌似是用djando搭建的。 用chrome的开发者工具先观察一下登陆的过程,可以发现post表单的内容还是比较简单的,就是自己的用户名密码,还有一个csrftoken的东东,虽然不知道是啥,至少用户名密码没有进行加密处理一切就好办了。 顺便学习一下什么是csrf。 CSRF(Cross-site request forgery)

努力小菜籽的博客 2645

【Python爬虫】爬取知乎推荐问题(含模拟登陆)

其中,为了实现模拟登陆,需要在浏览器完成登录之后,手动复制 Cookie 并代替代码中的 Cookie。以下代码可以爬取知乎推荐阅读内容的问题,并存储在D:\ \zhihu.txt 中。【Python爬虫】爬取知乎推荐问题(含模拟登陆)

UIBE纪涵柏的博客 781

python爬虫登录网站_Python网络爬虫之模拟登陆

原标题:Python网络爬虫之模拟登陆 为什么要模拟登陆?Python网络爬虫应用十分广泛,但是有些网页需要用户登陆后才能获取到信息,所以我们的爬虫需要模拟用户的登陆行为,在登陆以后保存登陆信息,以便浏览该页面下的其他页面。保存用户信息模拟登陆后有两种方法可以保存用户信息,通过Session来保存登陆信息或者通过Cookie来保存登陆信息一、Session的用法# 导入requests模块impo...

weixin_39875941的博客 953

Python网络爬虫--模拟登陆教务处网站

本文主要介绍如何利用Python的requests库实现学校教务处网站的模拟登陆。关于教务处网站模拟登陆的典型应用主要有课程格子、超级课程表等,教务处网站形式多种多样,但登陆的基本流程类似,即构建表单-提交表单-实现登陆。本文以我浙的教务处网站为例进行模拟登陆演示。 登陆流程分析 首先打开我浙的教务处网站首页,F12打开开发者工具,输入学号、用户名、验证码,点击登陆之后,通过开发者...

打酱油的葫芦娃 5761

Python爬虫技术(一)--模拟登陆

Python爬虫入门教程,模拟登陆实战

对着世界说你好 1389

大语言模型推理机制:Prefill、Decode与KV Cache解析

Transformer架构中的推理过程涉及Prefill、Decode和KV Cache三个关键技术阶段。Prefill阶段负责将输入文本转换为token序列并生成初始隐藏状态,其计算复杂度与输入长度成正比。Decode阶段则以自回归方式逐token生成输出,依赖KV Cache存储历史键值对来避免重复计算。KV Cache作为核心优化机制,通过智能管理对话记忆显著提升推理效率。这些技术在聊天机器人、代码生成等场景中至关重要,特别是KV Cache的内存优化策略直接影响大模型在边缘设备等资源受限环境中的部署

weixin_30664615的博客 435

过压保护电路(OVP)

作者:AirCity 2020.2.4 Aircity007@sina.com 本文所有权归作者Aircity所有 1 示例一 当VBUS=5V时,各点电压电流如图所示,Q1接近截止,输出信号是5V。 当VBUS=5.4V开始,输出信号开始下降,直到VBUS=6.1V,输出信号降低为0.6V。 下面是实测波形,这个电路,输出信号的电压不会超过5.4V,这个输出信号可用于电源的控制信号。 2 ...

AirCity123的博客 3万+

socket模拟http的登陆_Python网络爬虫之模拟登陆 !

为什么要模拟登陆?Python网络爬虫应用十分广泛,但是有些网页需要用户登陆后才能获取到信息,所以我们的爬虫需要模拟用户的登陆行为,在登陆以后保存登陆信息,以便浏览该页面下的其他页面。保存用户信息模拟登陆后有两种方法可以保存用户信息,通过Session来保存登陆信息或者通过Cookie来保存登陆信息一、Session的用法# 导入requests模块import requests # 通过requ...

weixin_39614637的博客 164

ABAP BOM展开避坑指南:CS_BOM_EXPL_MAT_V2函数参数配置详解

本文深入解析了SAP ABAP开发中用于物料清单展开的核心函数CS_BOM_EXPL_MAT_V2。针对其复杂的参数配置,如CAPID、STLAN、DATUV和MEHRS,提供了详细的避坑指南和最佳实践,帮助开发者避免数据错误与性能陷阱,实现高效、准确的BOM多层展开。

pea55的博客 854

python网络爬虫---模拟登陆

为什么要模拟登陆       网页需要用户登陆后才能获取到信息,所以我们的爬虫需要模拟用户的登陆行为,在登陆以后保存登陆信息,以便浏览该页面下的其他页面。 模拟登陆的步骤:      一 保存用户的登录信息 :Session和Cookie        session:       import requests s=requests.Session() r=s.post(url,da...

qq_33643943的博客 412

MTK metadata中AF模块的移除与配置调整

本文详细介绍了在MTK平台Camera开发中如何移除metadata中的AF(自动对焦)模块。通过系统清理MTK_CONTROL_AF_REGIONS、MTK_CONTROL_MAX_REGIONS等关键配置项,并调整对焦模式及硬件特性声明,确保定制化设备在禁用自动对焦功能后的稳定运行。

q1w3e5r7t9y的博客 570

HX720数据采集实战:从硬件连接到姿态解析(含避坑指南)

本文详细介绍了HX720高精度ADC芯片在数据采集与姿态解析项目中的实战应用。内容涵盖从硬件电路设计、驱动源码编写与优化,到原始数据处理、校准以及最终姿态角度计算的完整流程,并提供了关键的避坑指南和调试技巧,帮助开发者高效完成从传感器信号到可用姿态数据的转换。

i8j9k0l1的博客 487

Python网络爬虫

Python以简单高效著称,在日常工作中用处非常多,处理文件、群发网络请求、爬网页信息等等,现把Python语法总结如下,供后续方便复习查阅。 文章目录一、变量 一、变量

Captain_RB的博客 5704

【100%通过率】华为od机试C卷【贪吃的猴子】Java&Go 实现

一只贪吃的猴子,来到一个果园,发现许多串香蕉排成一行,每串香蕉上有若干根香蕉。每串香蕉的根数由数组numbers给出。猴子获取香蕉,每次都只能从行的开头或者未尾获取,并且只能获取N次,求猴子最多能获取多少根香蕉。第一次获取香蕉为行的开头,第二次获取为行的末尾,因此最终根数为4+3 =7。全部获取所有的香蕉,因此最终根数为1+2+3 = 6。第二行为数组numbers的值每个数字通过空格分开。1:简单题目,两个指针分别指向头尾,逐个对比即可。第一行为数组numbers的长度。第三行输入为N,表示获取的次数。

MISAYAONE的博客 1435

python实现登录抓取_Python网络爬虫之模拟登陆

为什么要模拟登陆?Python网络爬虫应用十分广泛,但是有些网页需要用户登陆后才能获取到信息,所以我们的爬虫需要模拟用户的登陆行为,在登陆以后保存登陆信息,以便浏览该页面下的其他页面。保存用户信息模拟登陆后有两种方法可以保存用户信息,通过Session来保存登陆信息或者通过Cookie来保存登陆信息一、Session的用法# 导入requests模块import requests# 通过reque...

weixin_39880666的博客 301

Android Framework 开发工程师职位深度解析与面试指南

摘要:博泰车联网科技(上海)股份有限公司招聘Android Framework开发工程师,负责车载系统的底层开发与优化。岗位要求5年以上经验,深入掌握Android Framework机制(WindowManager、PowerManager等模块),熟悉高通平台中间件架构及NDK/JNI开发,具备性能优化(启动时间、ANR处理)、OTA升级等能力。需熟练使用Android Studio、Git等工具,有车载开发经验者优先。工作内容包括Framework定制开发、问题排查及技术文档编写。

郑伟强dev的专栏 551

Halcon那些事:Halcon非常核心的1个概念reduce_domain算子的理解和1个详细的使用示例

Reduce是减少的意思。并不是真的去裁剪图像,而是定义一个“感兴趣的区域(Region of Interest, ROI)”。后续的图像处理算子将只在这个定义的区域内有效,区域外的像素将被忽略。在一张白纸(完整图像)上放一张镂空的纸板(Domain)。我们后续的绘画(图像处理操作)只会透过镂空的部分影响到下面的白纸。镂空纸板之外的部分保持不变,也不会被处理。关键步骤:使用ReduceDomain,将图像的域限制为ROI区域,图像在原来图像基础上存在图像区域。

十多年IT经验,专注机器视觉,智能制造半导体行业 577

爬虫模拟登陆手机验证码_Python 网络爬虫之模拟登陆合集

摘要: 之前我们爬取的实习僧、糗事百科、网易新闻都是不需要登陆,不需要你去做账号、Cookies、Session等等,顶多只需要一个 headers (请求头),但还有一类是需要:你(注册)账号登陆才能进行后续的操作。例如:淘宝、知乎、豆瓣之类的需要你登陆的。我们之前又整合一些 requests 库 提供 http 的所有基本请求方式:Python资源共享群:315346913回顾:1.GET请求...

weixin_39770165的博客 910

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Python爬虫学习记录——19.去哪儿网模拟登陆

文章目录模拟登陆Cookie实战补充:豆瓣登陆 模拟登陆 本篇博客主要是讲解如何模拟登陆去哪儿网,使用的工具是Chrome的开发者工具和requests库。两者都是之前学过的知识,这次我们把它们放在一起应用 什么是模拟登陆 有些网站需要用户登录后才会有权限回去到所需要的信息,此时可以设计爬虫进行模拟登录 怎么做到模拟登陆 把这句话补全就是: 怎么(让机器)模拟(人在浏览器上的行为)登录(指定的网站...

赈川 1106

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python post请求_Python 网络爬虫之模拟登陆合集 !

摘要: 之前我们爬取的实习僧、糗事百科、网易新闻都是不需要登陆,不需要你去做账号、Cookies、Session等等,顶多只需要一个 headers (请求头),但还有一类是需要:你(注册)账号登陆才能进行后续的操作。 例如:淘宝、知乎、豆瓣之类的需要你登陆的。我们之前又整合一些 requests 库 提供 http 的所有基本请求方式:Python资源共享群:484031800回顾...

weixin_39585795的博客 345
上一篇: Python 网络爬虫入门详解
下一篇: Python爬虫(一):编写简单爬虫之新手入门
智泊AI官方
博客等级 码龄6年 8638粉丝 2667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值