python爬蟲5:requests庫-案例3

python爬蟲5:requests庫-案例3

前言

? python實現網絡爬蟲非常簡單,只需要掌握一定的基礎知識和一定的庫使用技巧即可。本系列目標旨在梳理相關知識點,方便以后復習。

申明

? 本系列所涉及的代碼僅用于個人研究與討論,并不會對網站產生不好影響。

目錄結構

文章目錄

    • python爬蟲5:requests庫-案例3
      • 1. 目標
      • 2. 詳細流程
        • 2.1 代理池的構建
        • 2.2 目標確定
        • 2.3 真實url確定
        • 2.4 代碼
      • 3. 總結

1. 目標

? 本次案例的主要目標是幫助大家熟悉requests庫中的會話維持技巧、代理構建等技巧。

? 再次說明,案例本身并不重要,重要的是如何去使用和分析,另外為了避免侵權之類的問題,我不會放涉及到網站的圖片,希望能理解

2. 詳細流程

2.1 代理池的構建

? 代理池的作用之前已經講過了,但是如何構建代理池呢?一般來說都是將那些可以使用的代理IP放入數據庫中,后面寫爬蟲程序的時候再調用,因為代理池是可以一直使用的工具。

? 我之前寫過一個腳本,就是利用一個爬蟲專門去爬免費代理網站的代理IP,然后再寫個爬蟲去爬取目標網站。不過這里,我們就簡單來,把一些可用的代理IP放入一個字典中即可

2.2 目標確定

? 這次我換了一個小網站,具體地址我就不放了。

? 首先,利用上一篇的知識,虛假登錄獲取data參數值,結果如下:

在這里插入圖片描述

? 可以發現的是,參數構建如下:

data = {'action' : 'user_login','username' : 賬號,'password' : 密碼,'rememberme' : 1
}

2.3 真實url確定

? 在上一講由于沒能實際運行代碼,所以忘記講述這一點了。

? 就是我們登錄頁面的url有時候并不是我們在網頁上看到的url,比如這個案例中,我在網頁上看到的登錄網址為:

xxxxxx_login.html

? 但是,實際上,我通過上面的POST頁面,發現真實的網址其實是一個名為xxxxx.php頁面,所以大家一定要以抓取的POST頁面信息為準,才可以快準狠地登錄成功。

2.4 代碼

? 有了上面的思路,代碼就很簡單了:

import requests
import time
# 網址
login_url = '真實登錄網址'
home_url = '個人用戶頁面網址'
# 參數
username = input('請輸入賬號:')
password = input('請輸入密碼:')
data = {'action': 'user_login','username': username,'password': password,'rememberme': '1'
}
# header參數
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
}
# 代理池
proxies = {'http' :'http://ip:端口',xxxxx
}
# 請求
session = requests.session()
# 登錄
session.post(login_url,headers=headers,data=data,proxies=proxies)
time.sleep(6)
# 訪問個人主頁
response = session.get(home_url,headers=headers)
# 查看結果
print(response.status_code)
# 把個人用戶界面網頁拷貝下來證明登錄成功
with open('home.html','w',encoding='utf-8') as f:f.write(response.content.decode('utf-8'))

? 這里又補充一個知識點,就是你可以把網頁源碼保存到本地,以html后綴格式存儲,然后可以用瀏覽器打開,這樣可以直觀看到爬取的結果

? 此時,我這里的結果如下:

在這里插入圖片描述

3. 總結

? 到這篇文章為止,requests庫就講解完畢了,這里我簡單總結一下寫請求代碼時最需要注意的點:

  • headers參數不能忘記,現在網站最基本的都會排查headers參數
  • 寫登錄爬蟲時,一定要去通過瀏覽器提供的后臺工具,結合我上篇和這篇的知識點,去抓取真實提交的POST頁面,找到參數和真實url

? 下一篇,開始講解解析庫的內容。

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

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

相關文章

hivesql-dayofweek 函數

返回日期或時間戳的星期幾。 此函數是 extract(DAYOFWEEK FROM expr) 的同義函數。 語法 dayofweek(expr) 參數 expr:一個 DATE 或 TIMESTAMP 表達式。 返回 一個 INTEGER,其中 1 Sunday 和 7 Saturday。 示例 > SELECT dayofweek(2009-07-30)…

mysql 01.三范式,數據類型

01.概念的區分: mysql是屬于DBMS層次的,sql語句是用于DBMS的語句。 02.sql語句詳細介紹: SQL的概述Structure Query Language(結構化查詢語言)簡稱SQL,它被美國國家標準局(ANSI)確定為關系型數據庫語言的美國標準,后…

神經網絡基礎-神經網絡補充概念-37-其他正則化方法

概念 L1 正則化(Lasso Regularization):L1 正則化通過在損失函數中添加參數的絕對值之和作為懲罰項,促使部分參數變為零,實現特征選擇。適用于稀疏性特征選擇問題。 L2 正則化(Ridge Regularization&…

conda常用命令及國內鏡像源

conda命令使用介紹 啟動conda source ~/.bashrc幫助目錄 conda create -h檢查conda版本 conda --version升級當前版本的conda conda update conda環境管理 列出所有的環境 conda info -e conda env list安裝一個不同版本的python新環境 conda create --name py27 pytho…

PHP FTP的相關函數及簡單使用示例

簡介 FTP是ARPANet的標準文件傳輸協議,該網絡就是現今Internet的前身。 PHP FTP函數是通過文件傳輸協議提供對文件服務器的客戶端訪問,FTP函數用于打開、登陸以及關閉連接,也用于上傳、下載、重命名、刪除以及獲取服務器上文件信息。 安裝 …

Ubuntu下mysql8開啟遠程連接

環境 mysql8ubuntu22.04 更改配置文件 vim /etc/mysql/mysql.conf.d/mysqld.conf找到 bind-address 127.0.0.1 mysqlx-bind-address 127.0.0.1 把這兩行注釋掉,保存退出即可 修改mysql配置 登錄mysql創建一個遠程連接賬戶,名字任意,密碼任意,用戶名…

前端高頻面試題 Day02

面試題 var 和 let const 的區別 var 是 ES5 及之前的語法,let const 是 ES6 語法var 和 let 是變量,可修改;const 是常量,不可修改var 有變量提升,let const 沒有var 沒有塊級作用域,let const 有 &…

JavaWeb-DAO設計模式

目錄 DAO設計模式 1.認識DAO 2.DAO各部分的詳解 3.DAO設計模式流程 DAO設計模式 1.認識DAO DAO(Data Acess Object 數據庫訪問對象)的主要功能是操作數據庫,所以DAO在標準開發架構中數據數據層,以下是標準開發的架構 客戶層:目前使用B/…

vue中style scoped屬性的作用

一、為什么要給style 節點加 scoped 屬性(vue) 1、作用:當style標簽里面有scoped屬性時,它的css只作用于當前組建的元素。在單頁面項目中可以使組件之間互不污染,實現模塊化(實現組件的私有化,不…

Ubuntu安裝mysql5.7

目錄 1. 更新系統軟件包2. 安裝MySQL 5.73. 啟動MySQL 服務4. 設置MySQL root 密碼5. 驗證MySQL 安裝6. 啟用遠程訪問7. 創建新用戶8. 為新用戶授予權限9. mysql命令 以Ubuntu 18.04系統為例,安裝MySQL 5.7。操作步驟如下: 1. 更新系統軟件包 sudo apt…

Openai中的tokens怎么估計

大規模語言模型(LLM)的出現給自然語言處理領域帶來了變革的可能性,Openai開放了chatgpt的API,方便了開發人員使用LLM的推理能力,注冊時贈送5美元的使用額度,有效期3個月。 如果想便捷的使用chatgpt的API&a…

介紹 TensorFlow 的基本概念和使用場景

TensorFlow 是一種開源的機器學習框架,由 Google 開發。它是用來構建和訓練機器學習模型的強大工具,支持很多種不同類型的機器學習算法,并使用數據流圖來表示計算過程。 TensorFlow 的核心是張量 (Tensor) 和計算圖 (Graph)。 張量 (Tensor)…

OpenCV之薄板樣條插值(ThinPlateSpline)

官方文檔&#xff1a;OpenCV: cv::ThinPlateSplineShapeTransformer Class Reference 使用方法&#xff1a; 頭文件&#xff1a;#include <opencv2/shape/shape_transformer.hpp> &#xff08;1&#xff09;點匹配 一般根據有多少個樣本&#xff08;或者點&#xff09;…

6.2 Spring Boot整合MyBatis

1、基于Spring BootMyBatis的學生信息系統的設計與實現案例 基于Spring BootMyBatis實現學生信息的新增、修改、刪除、查詢功能&#xff0c;并實現MySQL數據庫的操作。 MySQL數據庫創建學生表&#xff08;t_student&#xff09;&#xff0c;有主鍵、姓名、年齡、性別、出生日…

npm如何設置淘寶的鏡像源模式

1. 查看當前npm的下載源 npm config get registry2. 全局配置npm使用淘寶鏡像作為默認下載源 npm config set registry https://registry.npm.taobao.org --global3. 安裝依賴包 npm install <package-name> 添加到devDependencies字段中&#xff1a; npm install &l…

Jmeter 二次開發 函數助手 AES加解密

Jmeter 二次開發 函數助手 AES加解密 1. 環境準備2. 關鍵技術說明2.1 離線導包2.2 示例代碼 3. 代碼包4. 結果演示 1. 環境準備 IDE &#xff1a;IntelliJ IDEA 2021.1.1 x64JAVA環境 &#xff1a;jdk1.8.0_251離線導包&#xff1a;導入Jmeter安裝目錄下lib/ext下的ApacheJmet…

Java課題筆記~ SpringMVC的四種跳轉方式

默認的跳轉是請求轉發&#xff0c;直接跳轉到jsp頁面展示 還可以使用框架提供的關鍵字redirect&#xff0c;進行一個重定向操作&#xff0c;包括重定向頁面和重定向action&#xff0c;使用框架提供的關鍵字forward&#xff0c;進行服務器內部轉發操作&#xff0c;包括轉發頁面…

Martin_DHCP_V3.0 (DHCP自動化泛洪攻擊GUI)

Github>https://github.com/MartinxMax/Martin_DHCP_V3.0 首頁 Martin_DHCP_V3.0 自動化DHCP洪泛攻擊 Martin_DHCP_V3.0 使用方法 安裝三方庫 #python3 1.RunMe_Install_Packet.py 攻擊路由器 #python3 Martin_DHCP_Attack.py 填寫網卡 填寫攻擊次數 開始運行

《Go 語言第一課》課程學習筆記(二)

初窺門徑&#xff1a;一個 Go 程序的結構是怎樣的&#xff1f; 創建“hello&#xff0c;world”示例程序 在 Go 語言中編寫一個可以打印出“hello&#xff0c;world”的示例程序&#xff0c;我們只需要簡單兩步&#xff0c;一是創建文件夾&#xff0c;二是開始編寫和運行。通…

高光譜 | 礦物識別和分類標簽數據制作、農作物病蟲害數據分類、土壤有機質含量回歸與制圖、木材含水量評估和制圖

本課程提供一套基于Python編程工具的高光譜數據處理方法和應用案例。 本課程涵蓋高光譜遙感的基礎、方法和實踐。基礎篇以學員為中心&#xff0c;用通俗易懂的語言解釋高光譜的基本概念和理論&#xff0c;旨在幫助學員深入理解科學原理。方法篇結合Python編程工具&#xff0c;…