你好
由于你是游客
无法查看本文
请你登录再进
谢谢合作
![04038a47e554b0687a585a68f5f9114c.png](https://img-blog.csdnimg.cn/img_convert/04038a47e554b0687a585a68f5f9114c.png)
当你在爬某些网站的时候
需要你登录才可以获取数据
咋整?
莫慌
小帅b把这几招传授给你
让你以后从容应对
![64c2a04f06244bdf4f4d681b98d54d53.gif](https://img-blog.csdnimg.cn/img_convert/64c2a04f06244bdf4f4d681b98d54d53.gif)
那么
接下来就是
学习 python 的正确姿势
![ad98e8ada04e1dc1a51ff98e5b170548.gif](https://img-blog.csdnimg.cn/img_convert/ad98e8ada04e1dc1a51ff98e5b170548.gif)
登录的常见方法无非是这两种
1、让你输入帐号和密码登录
![69612a61d570284e46d1085376867ac0.png](https://img-blog.csdnimg.cn/img_convert/69612a61d570284e46d1085376867ac0.png)
2、让你输入帐号密码+验证码登录
![528095ffaed88bd66d9e360bf86a17fa.png](https://img-blog.csdnimg.cn/img_convert/528095ffaed88bd66d9e360bf86a17fa.png)
今天
小帅b先跟你说说第一种
需要验证码的咱们下一篇再讲
第一招
![3a69ff94b339c6c07ecf4665a9f9e92d.png](https://img-blog.csdnimg.cn/img_convert/3a69ff94b339c6c07ecf4665a9f9e92d.png)
Cookie大法
你平常在上某个不为人知的网站的时候
是不是发现你只要登录一次
就可以一直看到你想要的内容
过了一阵子才需要再次登录
这就是因为 Cookie 在做怪
简单来说
就是每一个使用这个网站的人
服务器都会给他一个 Cookie
那么下次你再请求数据的时候
你顺带把这个 Cookie 传过去
服务器一看
诶,小伙子是老客户啊
![f2d5c2d3c8b091c30f160dddac70bb8e.png](https://img-blog.csdnimg.cn/img_convert/f2d5c2d3c8b091c30f160dddac70bb8e.png)
有登录过
直接返回数据给他吧
在服务中还可以设置 Cookie 的有效时间
也就是说
当你下次携带一个过期了的 Cookie 给服务器的时候
服务器虽然知道你是老客户
但是还是需要你重新再登录一次
然后再给你一个有效的 Cookie
Cookie 的时长周期是服务器那边定的
ok
了解了这一点之后
我们就来玩一下吧
我们以「逼乎」为例
https://biihu.cc/account/login/
输入地址之后
按一下 F12
点击 network 标签
然后登录你的帐号
然后点击其中一个
你就可以看到在 Request Headers 有你的 Cookie
![db9df281cfbc414a96132570848f7730.png](https://img-blog.csdnimg.cn/img_convert/db9df281cfbc414a96132570848f7730.png)
有了 Cookie 之后
我们在代码中直接获取我的个人信息
import requestsheaders = { # 假装自己是浏览器 '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)
运行后可以发现不用登录就可以直接拿到自己的个人信息了
小帅b真特么帅 的个人主页 - 逼乎....
第二招
![b339281abf733027fe3e79c0ffe6187c.png](https://img-blog.csdnimg.cn/img_convert/b339281abf733027fe3e79c0ffe6187c.png)
表单请求大法
很简单
就是通过抓包
获取请求登录的时候需要用到的用户名密码参数
然后以表单的形式请求服务器
如果你细心一点的话应该会知道之前说过拉
具体在这
去看下
我就不多说了
python爬虫03:那个叫 Urllib 的库让我们的 python 假装是浏览器
第三招
![dba289668060b18473b41870ff1e8b35.png](https://img-blog.csdnimg.cn/img_convert/dba289668060b18473b41870ff1e8b35.png)
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
以上这三招
![478a4d3dcf50e139f5378ebc584875b9.png](https://img-blog.csdnimg.cn/img_convert/478a4d3dcf50e139f5378ebc584875b9.png)
希望对你有帮助
咱们下一篇说说验证码相关
下回见
peace
![52a720a7ccf9ba3016e4049486fde8b9.gif](https://img-blog.csdnimg.cn/img_convert/52a720a7ccf9ba3016e4049486fde8b9.gif)
帅b老仙
法力无边