你好

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

由于你是游客

 

无法查看本文

 

请你登录再进

 

谢谢合作

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第1张

 

当你在爬某些网站的时候

 

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

 

咋整?

 

莫慌

 

小帅b把这几招传授给你

 

让你以后从容应对

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第2张

 

那么

 

接下来就是

 

学习 python 的正确姿势

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第3张

 

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

 

1、让你输入帐号和密码登录

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第4张

 

2、让你输入帐号密码+验证码登录

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第5张

 

今天

 

小帅b先跟你说说第一种

 

需要验证码的咱们下一篇再讲

 

第一招

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第6张

 

Cookie大法

 

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

 

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

 

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

 

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

 

这就是因为 Cookie 在做怪

 

简单来说

 

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

 

服务器都会给他一个 Cookie

 

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

 

你顺带把这个 Cookie 传过去

 

服务器一看

 

诶,小伙子是老客户啊

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第7张

 

有登录过

 

直接返回数据给他吧

 

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

 

也就是说

 

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

 

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

 

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

 

然后再给你一个有效的 Cookie

 

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

 

ok

 

了解了这一点之后

 

我们就来玩一下吧

 

我们以「逼乎」为例

 

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

 

输入地址之后

 

按一下 F12

 

点击 network 标签

 

然后登录你的帐号

 

然后点击其中一个

 

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

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第8张

 

 

有了 Cookie 之后

 

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

 

import requests
headers = {    # 假装自己是浏览器 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.75 Chrome/73.0.3683.75 Safari/537.36', # 把你刚刚拿到的Cookie塞进来 'Cookie': 'eda38d470a662ef3606390ac3b84b86f9; Hm_lvt_f1d3b035c559e31c390733e79e080736=1553503899; biihu__user_login=omvZVatKKSlcXbJGmXXew9BmqediJ4lzNoYGzLQjTR%2Fjw1wOz3o4lIacanmcNncX1PsRne5tXpE9r1sqrkdhAYQrugGVfaBICYp8BAQ7yBKnMpAwicq7pZgQ2pg38ZzFyEZVUvOvFHYj3cChZFEWqQ%3D%3D; Hm_lpvt_f1d3b035c559e31c390733e79e080736=1553505597',}
session = requests.Session()response = session.get('https://biihu.cc/people/wistbean%E7%9C%9F%E7%89%B9%E4%B9%88%E5%B8%85', headers=headers)
print(response.text)

 

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

 

<!DOCTYPE html><html><head><meta content="text/html;charset=utf-8" http-equiv="Content-Type" /><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport" /><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" /><meta name="renderer" content="webkit" /><title>小帅b真特么帅 的个人主页 - 逼乎</title><meta name="keywords" content="逼乎,问答,装逼,逼乎网站" /><meta name="description" content="逼乎 ,与世界分享你的装逼技巧与见解" /><base href="https://biihu.cc/" /><!--[if IE]></base><![endif]--><link rel="stylesheet" type="text/css" href="https://biihu.cc/static/css/bootstrap.css" /><link rel="stylesheet" type="text/css" href="https://biihu.cc/static/css/icon.css" /><link href="https://biihu.cc/static/css/default/common.css?v=20180831" rel="stylesheet" type="text/css" /><link href="https://biihu.cc/static/css/default/link.css?v=20180831" rel="stylesheet" type="text/css" /><link href="https://biihu.cc/static/js/plug_module/style.css?v=20180831" rel="stylesheet" type="text/css" /><link href="https://biihu.cc/static/css/default/user.css?v=20180831" rel="stylesheet" type="text/css" /><link href="https://biihu.cc/static/css/mood/mood.css" rel="stylesheet" type="text/css" /><script type="text/javascript"> var _02AEC94D5CA08B39FC0E1F7CC220F9B4="a5359326797de302bfc9aa6302c001b8"; var G_POST_HASH=_02AEC94D5CA08B39FC0E1F7CC220F9B4; var G_INDEX_SCRIPT = ""; var G_SITE_NAME = "逼乎"; var G_BASE_URL = "https://biihu.cc"; var G_STATIC_URL = "https://biihu.cc/static"; var G_UPLOAD_URL = "/uploads"; var G_USER_ID = "188";  var G_USER_NAME = "小帅b真特么帅"; var G_UPLOAD_ENABLE = "Y"; var G_UNREAD_NOTIFICATION = 0; var G_NOTIFICATION_INTERVAL = 100000; var G_CAN_CREATE_TOPIC = "1"; var G_ADVANCED_EDITOR_ENABLE = "Y"; var FILE_TYPES = "jpg,jpeg,png,gif,zip,doc,docx,rar,pdf,psd";</script><script src="https://biihu.cc/static/js/jquery.2.js?v=20180831" type="text/javascript"></script>
....

 

 

第二招

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第9张

 

表单请求大法

 

很简单

 

就是通过抓包

 

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

 

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

 

如果你细心一点的话应该会知道之前说过拉

 

具体在这

去看下

我就不多说了

 

python爬虫03:那个叫做 Urllib 的库让我们的 python 假装是浏览器

 

 

第三招

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第10张

 

Selenium 自动登录法

 

你应该看过这两个

 

python爬虫09 | 上来,自己动 !这就是 selenium 的牛逼之处

python爬虫11 | 这次,将带你爬取b站上的NBA形象大使蔡徐坤和他的球友们

 

看过的话

 

那么对于你来说

 

Selenium 自动登录也太 tm 简单了吧

 

获取到两个输入框的元素

 

再获取到登录按钮

 

往输入框写你的帐号密码

 

然后自动点击一下登录

 

username = WAIT.until(EC.presence_of_element_located((By.CSS_SELECTOR, "帐号的selector")))password = WAIT.until(EC.presence_of_element_located((By.CSS_SELECTOR, "密码的selector")))submit = WAIT.until(EC.element_to_be_clickable((By.XPATH, '按钮的xpath')))
username.send_keys('你的帐号')password.send_keys('你的密码')submit.click()

 

登录完之后拿到 Cookie

 

cookies = webdriver.get_cookies()

 

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

 

ok

 

以上这三招

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第11张

 

希望对你有帮助

 

咱们下一篇说说验证码相关

 

下回见

 

peace

 

python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定! 随笔 第12张

 

帅b老仙

法力无边

 

(你想我么?)

 

 

点个在看

继续发力

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄