Python 爬蟲入門 Day 4 - 模擬登錄爬蟲與 Session 維持

Python 第二階段 - 爬蟲入門

🎯 今日目標

  • 學習什么是 Cookie / Session,為什么要維持登錄狀態
  • 掌握 requests.Session 用法
  • 模擬登錄一個帶登錄表單的網站
  • 獲取登錄后的頁面內容

📘 學習內容詳解

🔐 什么是 Session?

很多網站內容需要登錄后才能訪問。登錄后,服務器會發給瀏覽器一個 SessionID(或 Cookie),作為用戶身份憑證。

如果你想爬取登錄后的頁面,就必須“模擬登錄”并“保持會話”。

🔁 requests.Session 的作用

使用 requests.Session() 可以:

  • 自動保存 Cookie
  • 在多個請求之間維持登錄狀態

💻 示例:模擬登錄測試網站

我們使用 httpbin.org 模擬登錄行為(演示形式):

import requests# 創建一個 session 對象
session = requests.Session()# 構造表單數據(假設是登錄表單)
login_data = {"username": "testuser","password": "testpass"
}# 模擬登錄請求
login_url = "https://httpbin.org/post"
response = session.post(login_url, data=login_data)print("登錄響應內容:")
print(response.json())  # httpbin 會返回你提交的內容# 接著訪問其他頁面(此時自動帶上了登錄 Cookie)
another_response = session.get("https://httpbin.org/cookies")
print("\n帶 Cookie 的請求結果:")
print(another_response.text)

🎯 模擬實際登錄網站(僅測試用途)

有些網站登錄邏輯如下:

  • 表單地址:https://example.com/login
  • 提交字段:username=xxx&password=xxx&csrf_token=xxx
  • 需要使用 headers 模擬瀏覽器
  • 可能還需要驗證碼(此類需用 Selenium)

🧪 今日練習任務

  1. 使用 requests.Session() 模擬一個簡單的表單提交(如 httpbin.org 或本地測試站點)

    import requests# 創建 Session 對象(自動保存 cookie)
    session = requests.Session()# 模擬登錄表單數據
    login_data = {"username": "testuser","password": "123456"
    }# 表單提交地址(httpbin.org 用于測試,會返回你提交的所有數據)
    login_url = "https://httpbin.org/post"# 發送 POST 請求
    response = session.post(login_url, data=login_data)# 查看服務器返回的 JSON 數據
    print("? 登錄請求返回內容:")
    print(response.json())# 模擬登錄成功后,再訪問一個頁面(httpbin 會帶上 cookie)
    response2 = session.get("https://httpbin.org/cookies")
    print("\n📦 后續請求中的 Cookie 內容:")
    print(response2.text)
    

    示例輸出:

    ? 登錄請求返回內容:
    {'args': {}, 'data': '', 'files': {}, 'form': {'password': '123456', 'username': 'testuser'}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '33', 'Content-Type': 'application/x-www-form-urlencoded', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.31.0', 'X-Amzn-Trace-Id': 'Root=1-684ec172-7f38f51b3f47f06628fc18c7'}, 'json': None, 'origin': '84.17.38.140', 'url': 'https://httpbin.org/post'}📦 后續請求中的 Cookie 內容:
    {"cookies": {}
    }
    
  2. 觀察響應中的 cookie、form、headers 內容

  3. 嘗試爬取一個你感興趣的登錄后頁面(如 CSDN 博客后臺、知乎收藏等——可能需要 cookie 手動導入)

    • 打開瀏覽器訪問 https://www.zhihu.com
    • 手動登錄你的知乎賬戶
    • 打開開發者工具(F12)→ Network → 找任意請求
    • 查看 Request Headers,復制 Cookie 字符串(很長那一串)
    • requests 模擬登錄后的請求
      import requests# 將你的 Cookie 字符串復制到這里(注意格式)
      cookie_str = 'd_c0="xxxx"; q_c1="xxxx"; z_c0="2|1:xxxx";'# 轉換為 dict(你也可以用 browser_cookie3 庫自動導入)
      cookies = {}
      for item in cookie_str.split(';'):key, value = item.strip().split('=', 1)cookies[key] = value# 請求登錄后才能訪問的頁面,例如知乎首頁
      url = "https://www.zhihu.com/"headers = {"User-Agent": "Mozilla/5.0","Referer": "https://www.zhihu.com/",
      }response = requests.get(url, headers=headers, cookies=cookies)# 打印網頁前 500 字符,確認是否登錄成功
      print(response.text[:500])
      

🧠 今日總結

  • 學會了 Session 的基本概念
  • 掌握了 requests.Session() 如何模擬登錄并抓取數據
  • 為更復雜的登錄機制(驗證碼、JS登錄)做準備

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84339.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84339.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84339.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新零售系統商城開發全解析

一、新零售系統商城概述? (一)新零售的概念? 新零售依托互聯網與物聯網技術,以數據驅動為核心,打破線上線下的界限,構建起一體化的全新零售模式。它不再局限于傳統的銷售渠道,而是通過整合線上電商平臺、線下實體店鋪以及現代物流配送等多方面資源,實現商品、服務、…

c++基礎入門——c++初識

我看的是B站黑馬程序員的課《C教程》。準備用這個專欄記錄一下學習筆記。 這套c課程的課程安排如下: 階段內容目標案例第一階段C基礎語法入門對c有初步了解,能夠有基礎編程能力通訊錄管理系統第二階段c核心編程介紹c面向對象編程,為大型項目…

【css】設置了margin-top為負數,div被img覆蓋的解決方法

文章目錄 場景默認情況下&#xff0c;層疊順序是如何工作的&#xff1f;為什么 img 會覆蓋 div&#xff1f;解決方法 場景 <img src"image.jpg"> <div>Content</div>有代碼如上&#xff0c;img src是一個https網絡圖片鏈接。 若div的margin-top為…

4 Studying《ARM System Developer’s Guide》1-7

目錄 Preface Chapter1 ARM Embedded Systems 1.1 The RISC design philosophy 1.2 The ARM Design Philosophy 1.3 Embedded System Hardware 1.4 Embedded System Software 1.5 Summary Chapter2 ARM Processor Fundamentals 2.1 Registers 2.2 Current Program St…

Vue3 + Axios + Ant Design Vue 請求封裝詳解教程(含 Token 鑒權、加密、下載)

Vue3 Axios Ant Design Vue 請求封裝詳解教程&#xff08;含 Token 鑒權、加密、下載&#xff09; 一、完整源碼&#xff08;請先閱讀&#xff09; import { message, Modal } from ant-design-vue; import axios from axios; import { localRead } from //utils/local-util…

SQL注入安全研究

?據OWASP 2023報告顯示&#xff0c;SQL注入連續15年位居Web安全威脅榜首&#xff0c;在應用漏洞中占比34.1%?? ?NIST統計顯示&#xff1a;2022-2023年高危SQL注入漏洞同比增長27%&#xff0c;企業平均修復成本達$320,000? 一、漏洞本質與技術原理解析 1. SQL注入核心機理…

Ubuntu最新版本(Ubuntu22.04LTS)安裝nfs服務器

NFS&#xff08;Network File System&#xff09;是一種允許不同計算機之間共享文件的網絡文件系統。 在Ubuntu 22.04 LTS中&#xff0c;您可以使用以下步驟安裝并配置NFS服務器。 一、安裝NFS服務器 在Ubuntu 22.04 LTS中&#xff0c;您可以使用以下命令安裝NFS服務器&…

學習筆記丨數字信號處理(DSP)的應用——圖像處理篇

&#x1f4cc; DSP在圖像處理中的應用&#xff1a;核心技術解析 數字信號處理&#xff08;DSP&#xff09;是圖像處理的核心技術之一&#xff0c;廣泛應用于增強、壓縮、分析和識別等領域。以下是DSP在圖像處理中的關鍵應用及技術細節&#xff1a; 目錄 &#x1f50d; 圖像增…

Kafka Broker處理消費者請求源碼深度解析:從請求接收到數據返回

在Kafka生態體系中&#xff0c;消費者從Broker拉取消息是實現數據消費的關鍵環節。Broker如何高效處理消費者請求&#xff0c;精準定位并返回對應分區數據&#xff0c;直接決定了整個消息系統的性能與穩定性。接下來&#xff0c;我們將聚焦Kafka Broker端&#xff0c;深入剖析其…

Objective-C與Swift混合編程

Objective-C與Swift混合編程的基本概念 Objective-C與Swift混合編程是指在同一項目中同時使用兩種語言進行開發。這種混合編程方式在遷移舊項目或利用Swift新特性時非常有用。兩種語言可以相互調用&#xff0c;但需要遵循特定的規則和橋接機制。 設置混合編程環境 在Xcode項…

IDE深度集成+實時反饋:企業級軟件測試方案Parasoft如何重塑汽車巨頭的測試流程

在汽車行業數字化轉型的浪潮中&#xff0c;全球第四大汽車集團Stellantis曾面臨嚴峻的測試效率挑戰&#xff1a;開發與測試流程脫節、團隊對“測試左移”策略的抵觸、TDD&#xff08;測試驅動開發&#xff09;推進困難……這些痛點直接導致質量保障滯后&#xff0c;拖慢產品交付…

【Linux】Linux異步I/O -libaio

一、libaio 原理概述 1.1 libaio 介紹 libaio&#xff08;Linux Asynchronous I/O&#xff09;是 Linux 內核提供的異步 I/O 庫&#xff0c;其核心原理是&#xff1a; 異步提交&#xff1a;應用程序通過 io_submit 提交 I/O 請求后立即返回&#xff0c;不阻塞進程事件通知&a…

git submodule 和git repo介紹

這是一個 Git 子模塊&#xff08;submodule&#xff09;管理問題。當一個 Git 倉庫&#xff08;主倉庫&#xff09;中包含多個其他 Git 倉庫&#xff08;子倉庫&#xff09;時&#xff0c;最推薦的做法是使用 Git 子模塊 或 Git 子樹&#xff08;subtree&#xff09; 進行管理。…

識別網絡延遲與帶寬瓶頸

識別網絡延遲與帶寬瓶頸 在分布式系統與微服務架構日益普及的背景下,網絡性能成為影響系統響應速度與服務可用性的重要因素。網絡延遲和帶寬瓶頸是兩類最常見的網絡性能障礙。準確識別這兩類瓶頸,有助于系統架構師從根源優化服務質量,保障系統在高并發、高流量場景下依然具…

Linux內網穿透(frp)

目標&#xff1a;讓我的VMware虛擬機某個服務擁有自己的外網訪問地址 FRP 服務端&#xff08;公網服務器&#xff09;配置 1. 下載 FRP 登錄公網服務器&#xff0c;執行以下命令下載并解壓 FRP&#xff1a; # 下載對應版本&#xff08;以Linux 64位為例&#xff09; wget h…

《Vuejs設計與實現》第 9 章(簡單 diff 算法)

目錄 9.1 減少 DOM 操作的性能開銷 9.2 DOM 復用與 key 的作用 9.3 找到需要移動的元素 9.4 如何移動元素 9.5 添加新元素 9.6 移除不存在的元素 9.7 總結 當新舊 vnode 的子節點都是一組節點時&#xff0c;為了以最小的性能開銷完成更新操作&#xff0c;需要比較兩組子…

隊列,環形緩沖區實現與應用:適用于GD32串口編程或嵌入式底層驅動開發

環形緩沖區實現與應用&#xff1a;從基礎到實踐 在嵌入式系統和實時數據處理場景中&#xff0c;環形緩沖區&#xff08;Circular Buffer&#xff09;是一種非常常用的的數據結構&#xff0c;它能有效地管理數據的讀寫操作&#xff0c;尤其適用于數據流的臨時存儲與轉發。 今天…

WHAT - Expo Go 和 development build

文章目錄 1. 什么是 Expo Go?簡介作用限制2. 什么是 Development Build(開發構建)?簡介功能創建方式3. 它們有什么區別?總結建議怎么從 Expo Go 遷移到開發構建一、什么是“遷移”?二、遷移步驟總覽三、詳細操作步驟1. 安裝 expo-dev-client2. 配置 eas.json(Expo 應用服…

Keepalived 配置 VIP 的核心步驟

Keepalived 配置 VIP 的核心步驟主要涉及安裝軟件、主備節點配置及服務管理。以下是具體操作指南: 一、安裝 Keepalived ?Ubuntu/Debian 系統? sudo apt update sudo apt install keepalived ?CentOS/RHEL 系統? sudo yum install keepalived 注:需確保已配置 EPE…

HarmonyOS 5折疊屏自適應廣告位布局方案詳解

以下是HarmonyOS 5折疊屏廣告位自適應布局的完整技術方案&#xff0c;綜合響應式設計、動態交互與元服務融合策略&#xff1a; 一、核心布局技術? ?斷點響應式設計? 基于屏幕寬度動態調整布局結構&#xff0c;避免簡單拉伸&#xff1a; // 定義斷點閾值&#xff08;單位&am…