Python网络爬虫之遇到需要登录的网站怎么办?

liftword3周前 (12-12)技术文章20

当我们在爬取某些网站的时候,

需要登录才可以获取数据,

怎么办?


登录的常见方法无非是这两种:

  1. 让你输入帐号和密码登录;
  2. 让你输入帐号密码+验证码登录。


我们先来说说第一种帐号和密码登录,验证码的下篇文章再说。

第一招:Cookie大法!

你平常在上某个不为人知的网站的时候,

是不是发现你只要登录一次,

就可以一直看到你想要的内容,

过了一阵子才需要再次登录,

这就是因为 Cookie 在做怪。

简单来说,

就是每一个使用这个网站的人,

服务器都会给他一个 Cookie,

那么下次你再请求数据的时候,

你顺带把这个 Cookie 传过去。

服务器一看,

诶,老客户啊,

登录过,

直接返回数据给他吧。

该服务中还可以设置 Cookie 的有效时间,

也就是说,

当你下次携带一个过期了的 Cookie 给服务器的时候,

服务器虽然知道你是老客户,

但是还是需要你重新再登录一次,

然后再给你一个有效的 Cookie,

Cookie 的时长周期是服务器那边定的。


了解了这一点之后,

我们就来玩一下吧。

我们以「逼乎」为例,

https://biihu.cc/account/login/

输入地址之后,

按一下 F12,

点击 network 标签,

然后登录你的帐号,

然后点击其中一个,

你就可以看到在 Request Headers 有你的 Cookie。

有了 Cookie 之后,

我们在代码中直接获取我的个人信息。

运行后可以发现不用登录就可以直接拿到自己的个人信息了。

第二招:表单请求大法

很简单,

就是通过抓包,

获取请求登录的时候需要用到的用户名密码参数,

然后以表单的形式请求服务器,

小编前面的文章已经讲过怎么用python伪装成浏览器,以表单提交数据,

有兴趣的可以看看前面的文章。

Python爬虫教程之使用Urllib库假装浏览器

第三招:Selenium 自动登录法

小编前面的两篇文章:

Python爬虫之爬虫神器selenium!还不会用它你就out了

Python爬虫爬取B站蔡徐坤打篮球视频(含工程源码)

大家应该已经看过了,

相信你们已经学会了Selenium的使用了!

用Selenium,我们可以:

获取到两个输入框的元素,

再获取到登录按钮,

往输入框写你的帐号密码,

然后自动点击一下登录。

登录完之后拿到 Cookie:

cookies = webdriver.get_cookies()

有了 Cookie 你就可以拿到你想要的数据了。


下篇文章我们学习一下账号密码+验证码搞定网站登录问题!

相关文章

AIGC辅助完成Python技术架构

AIGC已经深入到方方面面,用好它能帮我们节省很多时间。特别是信息技术领域。AIGC的工具很多,这里主要使用Bito,当然也可以使用百度文小言、阿里通义、腾讯元宝、抖音豆包。Python是如今最流行...

Python+PyQt架构:如何调用多个设计师窗口界面文件示例

引言Qt是C++语言下广泛使用的一种跨平台的程序界面设计库,而PyQt是其在Python语言下的绑定,这为在Python语言下编写GUI界面程序提供了极大的便利。对于界面程序的设计,可以使用代码构建,...

做好架构师,要懂微服务,汇总微服务架构落地的15种框架

这两年,微服务这个概念火了,火到什么程度呢?2016年有一个统计说,两千家企业里,30%在使用微服务,15%在实验开发和测试微服务架构,24%在学习微服务准备转型,只有剩下的30%的企业没有使用微服务...

pytest框架精髓—fixture

简介一直在和大家聊pytest的一些内容,今天呢想和大家分享pytest框架的精髓,话不多说,我们直接开始吧,还有喜欢的记得关注我哟。介绍:  fixture区别于unnitest的传统单元测试(se...

Python基础-Python常用的内置函数与标准库介绍?

在之前的分享中,我们介绍了关于Python入门级别的知识点,包括了Python的数据类型、流程控制语句、文件操作、异常处理以及面向对象相关的内容,这篇文章,我们主要来介绍一下关于Python中我们常用...

Python中threading线程模块

一个进程就是一个正在执行的程序,每一个进程都有自己独立的一块内存空间、一组系统资源。在进程的概念中,每一个进程的内部数据和状态都是完全独立的。在一个进程中可以包含多个线程,多个线程共享一块内存空间和一...