如何使用python爬蟲爬取要登陸的網(wǎng)站
你好
由于你是游客
無法查看本文
請你登錄再進
謝謝合作。。。。。
當(dāng)你在爬某些網(wǎng)站的時候
需要你登錄才可以獲取數(shù)據(jù)
咋整?
莫慌
把這幾招傳授給你
讓你以后從容應(yīng)對
登錄的常見方法無非是這兩種
1、讓你輸入帳號和密碼登錄
2、讓你輸入帳號密碼+驗證碼登錄
今天
先跟你說說第一種
需要驗證碼的咱們下一篇再講
第一招
Cookie大法
你平常在上某個不為人知的網(wǎng)站的時候
是不是發(fā)現(xiàn)你只要登錄一次
就可以一直看到你想要的內(nèi)容
過了一陣子才需要再次登錄
這就是因為 Cookie 在做怪
簡單來說
就是每一個使用這個網(wǎng)站的人
服務(wù)器都會給他一個 Cookie
那么下次你再請求數(shù)據(jù)的時候
你順帶把這個 Cookie 傳過去
服務(wù)器一看
誒,小伙子是老客戶啊
有登錄過
直接返回數(shù)據(jù)給他吧
在服務(wù)中還可以設(shè)置 Cookie 的有效時間
也就是說
當(dāng)你下次攜帶一個過期了的 Cookie 給服務(wù)器的時候
服務(wù)器雖然知道你是老客戶
但是還是需要你重新再登錄一次
然后再給你一個有效的 Cookie
Cookie 的時長周期是服務(wù)器那邊定的
ok
了解了這一點之后
我們就來玩一下吧
我們以「逼乎」為例
https://biihu.cc/account/login/
輸入地址之后
按一下 F12
點擊 network 標(biāo)簽
然后登錄你的帳號
然后點擊其中一個
你就可以看到在 Request Headers 有你的 Cookie
有了 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)
運行后可以發(fā)現(xiàn)不用登錄就可以直接拿到自己的個人信息了
<!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="逼乎,問答,裝逼,逼乎網(wǎng)站" /> <meta name="description" content="逼乎 ,與世界分享你的裝逼技巧與見解" /> <base rel="external nofollow" /><!--[if IE]></base><![endif]--> <link rel="stylesheet" type="text/css" rel="external nofollow" /> <link rel="stylesheet" type="text/css" rel="external nofollow" /> <link rel="external nofollow" rel="stylesheet" type="text/css" /> <link rel="external nofollow" rel="stylesheet" type="text/css" /> <link rel="external nofollow" rel="stylesheet" type="text/css" /> <link rel="external nofollow" rel="stylesheet" type="text/css" /> <link rel="external nofollow" 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 = "666"; 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>
第二招
表單請求大法
很簡單
就是通過抓包
獲取請求登錄的時候需要用到的用戶名密碼參數(shù)
然后以表單的形式請求服務(wù)器
如果你細心一點的話應(yīng)該會知道之前說過拉
具體在這
去看下
我就不多說了
第三招
Selenium 自動登錄法
獲取到兩個輸入框的元素
再獲取到登錄按鈕
往輸入框?qū)懩愕膸ぬ柮艽a
然后自動點擊一下登錄
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 你就可以拿到你想要的數(shù)據(jù)了,希望對你有幫助
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python爬蟲之爬取最新更新的小說網(wǎng)站
- Python爬蟲設(shè)置Cookie解決網(wǎng)站攔截并爬取螞蟻短租的問題
- python爬蟲爬取某網(wǎng)站視頻的示例代碼
- python爬蟲實現(xiàn)爬取同一個網(wǎng)站的多頁數(shù)據(jù)的實例講解
- Python爬蟲自動化獲取華圖和粉筆網(wǎng)站的錯題(推薦)
- python爬蟲使用正則爬取網(wǎng)站的實現(xiàn)
- 詳解python 破解網(wǎng)站反爬蟲的兩種簡單方法
- python爬蟲爬取筆趣網(wǎng)小說網(wǎng)站過程圖解
- python爬蟲爬取幽默笑話網(wǎng)站
- python 爬取吉首大學(xué)網(wǎng)站成績單
相關(guān)文章
Python中利用all()來優(yōu)化減少判斷的實例分析
在本篇文章里小編給大家整理的是一篇關(guān)于Python中利用all()來優(yōu)化減少判斷的實例分析內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2021-06-06pandas實現(xiàn)DataFrame顯示最大行列,不省略顯示實例
今天小編就為大家分享一篇pandas實現(xiàn)DataFrame顯示最大行列,不省略顯示實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-1212個Python程序員面試必備問題與答案(小結(jié))
這篇文章主要介紹了12個Python程序員面試必備問題與答案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06如何使用matplotlib讓你的數(shù)據(jù)更加生動
數(shù)據(jù)可視化用于以更直接的表示方式顯示數(shù)據(jù),并且更易于理解,下面這篇文章主要給大家介紹了關(guān)于如何使用matplotlib讓你的數(shù)據(jù)更加生動的相關(guān)資料,需要的朋友可以參考下2021-11-11python實戰(zhàn)串口助手_解決8串口多個發(fā)送的問題
今天小編就為大家分享一篇python實戰(zhàn)串口助手_解決8串口多個發(fā)送的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06python使用paramiko模塊實現(xiàn)ssh遠程登陸上傳文件并執(zhí)行
使用paramiko,ssh遠程登陸,長傳文件并執(zhí)行。其中用到了多線程和隊列,paramiko是用python語言寫的一個模塊,遵循SSH2協(xié)議,支持以加密和認(rèn)證的方式,進行遠程服務(wù)器的連接。2014-01-01