Python模拟登陆万能法-微博|知乎

python模拟新浪微博登陆之获取cookies python模拟新浪微博登陆之获取cookie首先感谢,敲代码的耗子http://www.cnblogs.com/mouse-coder/archive/2013/03/03/2941265.html?utm_source=tuicool,之前一直搞不懂登陆新浪微博的原理,看了他那篇文章之后,终于明白了基本原理。在这里主要是通过代码实现那篇文章的过程。获取网页使用的包是requests,正则匹配用的 阅读详情

Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法。你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆。本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅用其作为例子来讲解。

用到的库有“selenium”和“requests”。通过selenium进行模拟登陆,然后将Cookies传入requests,最终用requests进行网站的抓取。优点就是不但规避了“selenium”其本身抓取速度慢的问题(因为仅仅用其作为登陆),又规避了利用requests登陆时需要制作繁琐的Cookies的过程(因为是从selenium直接拿来cookies)。文章前面列出了步骤与代码,后面补充了登陆微博与知乎的实例。

文章最后给出了一个懒人的方法。想要走捷径的朋友直接看第四部知乎登陆。该方法适用于登陆所有网站,仅用知乎作为实例以方便讲解。

------------开始---------

需要材料:1.自己喜欢的webdriver (必须) 2.Anaconda(可选)。selenium是借助浏览器而运行的,因此需要额外下载一款小型浏览器。Anaconda推荐大家也去下载一个,它里面包含了众多python的库,用起来很方便,而且免费!友情链接:1.谷歌 Web Driver下载 2. Anaconda下载

第一部:利用selenium登陆

导入selenium库

from selenium import webdriver

明确模拟浏览器在电脑中存放的位置,比如我存在了D盘

chromePath = r'D:\Python Program\chromedriver.exe' 

用selenium的webdriver方程指明浏览器的路径,同时打开一个浏览器。模拟浏览器有多种可选,比如Firefox, Safari。本次用的是谷歌的模拟浏览器。注意:'.Chome'是大写字母。

wd = webdriver.Chrome(executable_path= chromePath)

让webdriver为你填写用户名和密码

wd.find_element_by_xpath('用户名选项卡位置').send_keys('用户名')
wd.find_element_by_xpath('密码选项卡位置').send_keys('密码')

让webdrive点击登陆,若是按钮就选择用click(),若是表单就选择submit()。

wd.find_element_by_xpath('登陆按钮所在位置').click() #若是按钮
wd.find_element_by_xpath('登陆按钮所在位置').submit() #若是表单

登陆完成,所有的cookies现在都存在了'wd'里面,可随时调用。

第二部:将selenium的cookies传入requests

导入requests库,并构建Session()

import reqeusts
req = requests.Session()

从‘wd'里调出cookies

cookies = wd.get_cookies()

将selenium形式的cookies转换为requests可用的cookies。

for cookie in cookies:
        req.cookies.set(cookie['name'],cookie['value'])

大功告成!尝试用requests来抓取网页。

req.get('待测试的链接')

以上就是python模拟登陆的万能方法,你无需分析传递给网站的Cookies。只需要告诉python在什么地方填写用户名与密码就可以。十分的便利。

第三部:微博模拟登陆

import requests
from selenium import webdriver
chromePath = r'浏览器存放位置'
wd = webdriver.Chrome(executable_path= chromePath) #构建浏览器
loginUrl = 'http://www.weibo.com/login.php' 
wd.get(loginUrl) #进入登陆界面
wd.find_element_by_xpath('//*[@id="loginname"]').send_keys('userword') #输入用户名
wd.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[2]/div/input').send_keys('password') #输入密码
wd.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[6]/a').click() #点击登陆
req = requests.Session() #构建Session
cookies = wd.get_cookies() #导出cookie
for cookie in cookies:
    req.cookies.set(cookie['name'],cookie['value']) #转换cookies
test = req.get('待测试的链接')

解释下关键的几个步骤:

1.找位置。推荐使用谷歌浏览器来查找每个元素的Xpath,参看这个:点击打开链接

2. 选择click函数还是submit函数。推荐每个都试一下,总会有一个成功的。

3.登陆微博是被要求输入验证码怎么办?有时登陆微博会被要求输入验证码,这个时候我们可以加一行手动输入验证码的代码。例如:

wd.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[6]/a').click() #点击登陆
wd.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[3]/div/input').send_keys(input("输入验证码: "))
wd.find_element_by_xpath('//*[@id="pl_login_form"]/div/div[3]/div[6]/a').click()#再次点击登陆

输入验证码的时候需要点击两次登陆。因为验证码的输入框只有在点击了一次登陆后才会弹出来!根据每个网站的不同而灵活应用selenium是十分重要的!但这个和分析那些Cookies比起来简直是太小儿科了。

第四部:知乎模拟登陆

知乎经常更新,因此即使方法写好了也可能不好用。因此我想到了一个终极方法,半手动登陆。仅用selenium打开一个浏览器,然后手动输入账号密码,有验证码就填验证码。等到成功登陆之后使用“get_cookies()”函数来调出它的Cookies。这个方法虽然看起来笨了点,但是效率比那些几百行的代码不知道要高多少!而且你还可以用手机扫描二维码登陆!只要这些登陆操作是在selenium所打开的浏览器内进行,selenium就可以完全记录下这些Cookies。代码如下:

import time
import requests
from selenium import webdriver
chromePath = r'浏览器储存的位置'
wd = webdriver.Chrome(executable_path= chromePath) 
time.sleep(45)#设定45秒睡眠,期间进行手动登陆。十分关键,下面有解释。
cookies = wd.get_cookies()#调出Cookies
req = requests.Session()
for cookie in cookies:
    req.cookies.set(cookie['name'],cookie['value'])
req.headers.clear() 
test = req.get('待测试的链接') 

req.headers.clear() 是删除原始req里面标记有python机器人的信息。这个信息会被一些网站(比如知乎)捕捉到。造成登陆爬取失败。务必要删除!

time.sleep()可以暂停执行下面的程序。在此期间你可以进行手动登陆,扫描二维码等。然后在45秒过后再让python执行后面的“cookies = wd.get_cookies()”。selenium的get.cookies方程可以抓取到你进行手动登陆过后的cookies。时间值的设定根据自己需要的时间。如果你在程序中已经将网站名、用户名、密码、等全部输入就剩下一个验证码需要手动的话,仅设定几秒钟就可以了!加入time.sleep的好处就是程序本身是不需要停止执行的!下面的所有程序可以无缝衔接。

感谢大家读到这,文章最初说的懒人方法就是我登陆知乎用到的这种方法,半手动。但是也不要觉得它不好,毕竟我们的目的是爬取网站的内容,尽快解决登陆问题。开始爬取工作才是正确的方向。这个方法可以帮您迅速登陆网站,节省大量时间。这个方法万能的原理就是它调用了真实的浏览器。那么只要在正常情况下浏览器能够访问的网站就都可以用这个方法登陆。

-------------------------------------------

参考:知乎回答

我在github上上传了封装的类:我的github     返回存储cookie的requests

超详细的Python实现新浪微博模拟登陆(小白都能懂) 最近由于需要一直在研究微博的爬虫,第一步便是模拟登陆,从开始摸索到走通模拟登陆这条路其实还是挺艰难的,需要一定的经验,为了让朋友们以后少走点弯路,这里我把我的分析过程和代码都附上来。 首先,我们先用正常的账号登陆,具体看会有些什么请求。这里我用的是Http Analyzer抓包(Filders也是一个不错的选择)。下面是正常登陆流程的截图: 图1 接下来我会详细说明各个过程。 第一步:... 阅读详情

相关推荐

Python爬虫实现--微博模拟登陆--涉及到的知识点,python包,实现代码详解。

之前写过一篇关于爬虫的文章,其中提到了用python requests包请求网页,并用beautifulsoup解析。 https://blog.youkuaiyun.com/qq_40589051/article/details/90579064 当时那篇文章中的网页都是不需要登陆的,而且由于赶项目所以学的那叫一个囫囵吞枣。请求,协议之类的知识点都没有怎么搞清楚,后来我发现网上的大佬们对于模拟登陆的方法...

嗒獭想睡觉 1117

Python模拟登陆网页的三种方法

爬虫模拟网页登陆,获取网页内容

LSH1628340121的博客 2万+

新浪微博爬虫:模拟登陆+爬取原始页面

最近搞科研,总要有数据,奈何新浪API限制太多。。。。。 网上的新浪爬虫教程太杂乱,就不能简单点让大家都看懂吗???? 主要参考: http://blog.youkuaiyun.com/bcj296050240/article/details/46685947 http://www.jianshu.com/p/36a39ea71bfd 用爬虫爬取新浪数

mmc2015的专栏 2751

Python爬虫——模拟登录

模拟登录现在主要分为两种模式,一种是基于Session和Cookie的模拟登录,一种是基于JWT(JSON Web Token)的模拟登录。

Bruce_xiaowei的博客 6276

python爬微博步骤手机_新浪微博爬取笔记(2):wap端模拟登陆 python

===================看了其他人的博客都写的很简洁干净,我这边的排版简直要晕。图和代码一起上,小白每一步都要有讲解。。。===================虽然weibo.com的模拟登陆用http://www.cnblogs.com/houkai/p/3487816.html的代码成功了,但是新版微博的标签太复杂,而且爬取一个用户的微博列表的时候,最底端是“正在加载”,不好模拟...

weixin_39930557的博客 1012

GMSL Strapping Pins CFG0/CFG1 应用

如果 0x13.bit3 = 0, 则是链路没有 Locked,需要去排查下具体问题(通常是工作模式配置问题)如果遇到 Link 无法建立(Locked),电源没有问题的情况下,多半是加串器和解串器的工作模式不匹配。芯片在上电时,会检测这两个管脚的电压,根据不同的电压值,芯片进入到不同的工作模式。一对加串器和解串器,只要工作模式匹配得当,Link Locked,便能够正常工作。ADI 已经充分考虑了用户的需求,尽可能的降低的芯片的使用和配置复杂度。GMSL 的解串器也是类似的配置,具体请参考对应的规格书。

iStoneWalker的博客 1271

Python扫码登录保存和验证cookies值——快手篇(二)

python实现扫码登录快手网页版。首先要学会抓包软件,通过扫二维码登录,保存cookies值并进行验证!无需selenium

Mute的博客 6070

LiveGBS流媒体平台GB/T28181实战指南:海康NVR物联网卡摄像头注册失败全链路排查与抓包技巧

本文详细解析了LiveGBS流媒体平台中海康NVR物联网卡摄像头注册失败的常见问题及解决方案。通过全链路排查与抓包技巧,包括物联网卡配置、多网卡冲突处理、防火墙设置等,帮助用户快速定位并解决GB/T28181协议下的设备注册难题,提升流媒体平台部署效率。

weixin_29290947的博客 492

python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝)

python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝) 1. 了解cookie和session 首先一定要先了解到cookie和session是什么,这是后面理解网站交互,模拟用户登录的基础。 1.1. 无状态协议:Http 如上图所示,HTTP协议 是无状态的协议,用户浏览服务器上的内容,只需要发送页面请求,服务器返回内容。对于服务器来说,并不关心,也...

Kosmoo的博客 13万+

Silly Tavern(酒馆)AI 角色扮演下载与安装教程(Windows本地部署)

SillyTavern是一款开源AI角色扮演前端工具,支持沉浸式对话和长期角色互动。本文详细介绍了在Windows系统F盘部署SillyTavern的完整流程,包括下载项目、安装Node.js和Git环境、配置路径、启动服务等关键步骤,并特别说明非系统盘路径可能遇到的npm安装问题及解决方法。成功启动后,用户可通过浏览器访问本地地址使用该工具进行AI角色扮演互动。

Tan3851的博客 1万+

逻辑判断1-逻辑基础知识

判断推理学习笔记

小y的学习笔记 2132

python怎么登录微博并发微博_Python模拟登陆万能法-微博|知乎

Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法。你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆。本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅用其作为例子来讲解。用到的库有“selenium”和“requests”。通过selenium进行模拟登陆,然后将Cookies传入requests,最终用requests进行网站的抓取。优点就是不但...

weixin_39938312的博客 402

MIMO-OFDM通信系统性能仿真及MATLAB实现

将MIMO和OFDM技术结合起来,可以充分利用两者的优点,进一步提高无线通信系统的性能。在MIMO-OFDM系统中,多个天线同时发射多个子载波,称为多天线多载波(MIMO-OFDM)系统。随着无线通信技术的不断发展,MIMO-OFDM技术因其高效、可靠和适应性等优点已被广泛应用于新一代通信系统中。本篇文章旨在介绍MIMO-OFDM通信系统的基本原理及其性能评估方法,并结合MATLAB提供相关代码实现。本篇文章介绍了MIMO-OFDM通信系统的基本原理和性能评估方法,并结合MATLAB提供了相关的实现代码。

学习使你进步。 2218

[134]python模拟登陆万能法-微博|知乎

Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法。你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆。本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅用其作为例子来讲解。 用到的库有“selenium”和“requests”。通过selenium进行模拟登陆,然后将Cookies传入requests,最终用requests进行网站的抓取。优点就是...

周小董 995

大模型测试人员完整学习体系(分层成长路线 + 知识框架 + 落地实操)

本文系统构建了大模型测试工程师的4级能力成长体系:L1(测试执行)-L2(专项测试)-L3(质量体系)-L4(行业标准),详细拆解了每个阶段的核心技能图谱。重点包括:入门层需掌握传统测试基础和大模型产品逻辑;进阶层需精通Prompt用例设计、RAG测试、安全对齐、自动化评测等专项能力;高级层聚焦评测平台搭建与质量体系建设;专家层深入算法对齐与行业标准制定。文章配套提供了分阶段技术工具栈、3-12个月学习路径及5类实战项目建议,形成了一套完整的大模型测试人才能力培养框架。

SmallBull的博客 457

15 RK3568 RTL8111 PCIE

我这边扩了三个网卡。pcie3.0拆分了1+1lane。需要注意自己的reset引脚修改为自身rtl引脚即可。1、调试pcie 扩展网卡 RTL8111。

qq_39451352的博客 179

python模拟登录网站_Python模拟登陆万能法

此文转自:https://zhuanlan.zhihu.com/p/28587931 转录只是为了方便学习,感谢他的分享Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法。你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆。本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅用其作为例子来讲解。用到的库有“selenium”和“requests”。通...

weixin_39722196的博客 1622

190、LLC谐振变换器的样机调试实战(问题定位)

这篇实战笔记总结了LLC谐振变换器样机调试中的五大典型问题及解决方案:1)空载炸机源于谐振电容纹波电流能力不足;2)轻载啸叫因控制环路不稳定,需调整突发模式阈值;3)MOSFET过热由死区时间不当导致,需精确优化实现ZVS;4)输出纹波大由PCB布局耦合引起,需优化共模抑制;5)启动过冲需延长软启动时间。作者强调调试需结合示波器、热成像仪等工具,理论计算与实测并重,并详细记录每次参数调整。文章指出LLC调试是不断试错的过程,关键是通过现象分析本质原因。

Jack010169的博客 49

Python模拟微博登陆,亲测有效

今天想做一个微博爬个人页面的工具,满足一些不可告人的秘密。那么首先就要做那件必做之事!模拟登陆…… 代码是参考了:https://www.douban.com/note/201767245/ 我对代码进行了优化,重构成了Python 3.6 版本,并且加入了大量注释方便大家学习。 PC 登录新浪微博时, 在客户端用js预先对用户名、密码都进行了加密, 而且在POST之前会GET 一组参数,这也将...

Python专栏 1966

efm32 入门.pdf

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

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

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

使用python进行微博登陆

微博登录页面分析 目标网站:https://weibo.com/ 微博密码加密使用的是rsa算法 微博登陆成功总共涉及到三个步骤: 1、向https://login.sina.com.cn/sso/prelogin.php发送请求来获取密码加密所需要的公钥及一系列下次发送请求所需要的参数 2、向https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19)这个地址发送请求获取微博通行证 3、向https://passport.weibo

shiguanggege的博客 9729

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python模拟登陆微博_超详细的Python实现微博模拟登陆,小白都能懂

原文来自:公众号"速学Python"前言最近由于需要一直在研究微博的爬虫,第一步便是模拟登陆,从开始摸索到走通模拟登陆这条路其实还是挺艰难的,需要一定的经验,为了让朋友们以后少走点弯路,这里我把我的分析过程和代码都附上来。首先,我们先用正常的账号登陆,具体看会有些什么请求。这里我用的是Http Analyzer抓包(Filders也是一个不错的选择)。下面是正常登陆流程的截图: 接下来我会详细说明...

weixin_39641334的博客 285

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python模拟登陆微博_Python模拟微博登陆的实例讲解

Python模拟微博登陆的方法介绍本篇文章给大家带来的内容是关于Python模拟微博登陆的方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。今天想做一个微博爬个人页面的工具,满足一些不可告人的秘密。那么首先就要做那件必做之事!模拟登陆……我对代码进行了优化,重构成了Python 3.6 版本,并且加入了大量注释方便大家学习。PC 登录新浪微博时, 在客户端用js预先...

weixin_39966376的博客 417

Python模拟登陆万能法之-解决selenium被封锁

今天分享一下解决方案。就是通过让selenium来执行javascript命令,来避开封锁。(此处应该有掌声) 文章分为三个部分。 1. 介绍如果使用在selenium中使用javascript命令。 2. 用示例介绍具体的使用方法。此处用“淘宝”和“知乎”(可怜的知乎,又要被爬了)作为示例。3. 分享给大家给一些方便的javascript命令。例如如何用selenium点击一个特定的区域。 ...

python学习者的博客 2707

新浪微博爬取笔记(2):wap端模拟登陆 python

=================== 看了其他人的博客都写的很简洁干净,我这边的排版简直要晕。图和代码一起上,小白每一步都要有讲解。。。 =================== 虽然weibo.com的模拟登陆用http://www.cnblogs.com/houkai/p/3487816.html的代码成功了,但是新版微博的标签太复杂,而且爬取一个用户的微博列表的时候,最...

auqgw4556的博客 986
上一篇: python的学习路线
下一篇: Mongo数据库安装与入门
oldbig_lin
博客等级 码龄10年 78粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值