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