Python網絡爬蟲之requests庫

目錄

一.網絡爬蟲的介紹

1.網絡爬蟲庫

2.robot.txt規則

二.requests庫

1.requests庫的安裝

2.get()函數

3.Response對象

Response的屬性

?設置編碼

返回網頁內容

text()

content()

三.提交信息到網頁

post()函數

四.會話與代理服務器


一.網絡爬蟲的介紹

1.網絡爬蟲庫

①urllib庫:Python自帶的標準庫,代碼編寫略微復雜

requests庫:第三方庫,在urllib庫的基礎上建立的,但使用起來更簡潔方便

③scrapy庫:第三方庫,是一個專業應用程序開發的網絡爬蟲庫

selenium庫:第三方庫,可用于驅動計算機中的瀏覽器執行相關命令,而無需用戶手動操作

2.robot.txt規則

注意不是 網站中的所有信息都允許被爬取,也不是所有的網站都允許被爬取,在大部分網站的根目錄存在一個robot.txt文件用于聲明此網站中禁止訪問的url和可以訪問的url

User-agent表示訪問網站的引擎,第一個值為*表示所有搜索引擎都需要遵守2-21行的規則

? ? ? ? ? ? ? ? ? 第二個值為Wandoujia Spider 表示Wandoujia Spider搜索引擎需要遵守的規則

Disallow表示該搜索引擎不允許訪問的url,值為/則表示不允許訪問任何內容

Allow表示該搜索引擎允許訪問的url

Sitemap網站地圖,用于提供網站中所有可以爬取的url

二.requests庫

1.requests庫的安裝

pip install requests -i 鏡像源地址

2.get()函數

在requests庫中獲取html網頁內容的方法就是get()函數

get(url,params=None,**kwargs)

url:需要獲取的網址

params:可選參數,以字典的形式發送信息,當需要想向網頁中提交查詢信息時使用

**kwargs:請求采用的可選參數

注意:此時get()函數爬取的網頁源代碼僅包含原始文本數據(如城市名稱),不包含渲染后的資源(如圖片、視頻)。r是返回的Response對象

import requests
r = requests.get('https://www.ptpress.com.cn/')

部分數據(如搜索關鍵詞)可通過字典參數動態添加到 URL 后(如 ?keyword=excel),適配不同網站的查詢格式。search表示搜索

import requests
r = requests.get('https://www.ptpress.com.cn/search?keyword=人工智能')

我們也可以用param參數來添加搜索信息,需要提前將param定義為字典

import requests
info ={'keyword':'人工智能
'}
r = requests.get('https://www.ptpress.com.cn/',params=info)

系統會自動在url后面添加字典信息形式為

https://www.ptpress.com.cn/search?keyword=人工智能'

3.Response對象

Response的屬性

關鍵屬性包括:
status_code:服務器返回的狀態碼(如200表示成功,301表示永久重定向)。
url:實際爬取的網頁地址。
encoding、cookies:網頁編碼和 Cookie 信息。
狀態碼用于判斷請求是否成功(如200為允許爬取,其他代碼可能表示拒絕或錯誤)。

?設置編碼

爬取內容出現亂碼時,需將響應對象的編碼(encoding)與網頁實際編碼(apparent_encoding)對齊。通過response對象.encoding = response對象.apparent_encoding自動匹配編碼(如UTF-8),解決亂碼問題。如果設置自動匹配編碼后依然出現亂碼,需要我們自行設置encoding編碼方式
未設置編碼時,輸出內容可能因默認編碼(如ISO-8859-1)與網頁編碼不匹配而顯示亂碼。

返回網頁內容

Response對象返回網頁對象有兩種方法text()和content()

text()

以字符串形式返回網頁內容

content()

以二進制形式返回網頁內容常用于保存網頁中的媒體文件,例如

import requests
r = requests.get('https://fileinfo.com/img/ss/xl/jpg_44-2.jpg')
f = open("1.jpg",'wb')
f.write(r.content)
f.close()

三.提交信息到網頁

我們用post請求將表單中的數據提交給瀏覽器

post()函數

post(url,data=None,json=None,**kwarge)
  • url:目標網站地址。
  • data:需要發送的以字典/元組形式提交的信息(如密碼修改表單)。
  • json:需要發送的JSON類型的數據
  • **kwargs:請求采用的可選參數

返回值也是一個Response對象

四.會話與代理服務器

會話維持:HTTP無記憶性需通過cookie或session保持連續操作(如翻頁爬取)


代理服務器:
作用:避免IP被封禁,通過中間服務器轉發請求(如爬取淘寶數據)。
擴展應用:VPN原理類似,通過代理訪問受限網站(如Facebook、ChatGPT)。
獲取方式:免費代理IP不穩定,推薦付費服務(如香港/新加坡服務器)。

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

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

相關文章

區塊鏈技術詳解:從原理到應用

引言 區塊鏈作為一項顛覆性技術,已從加密貨幣的基石演變為重塑多個行業的創新引擎。本文旨在深入解析其核心原理、關鍵特性、技術架構、主流應用及未來挑戰。一、 區塊鏈核心概念:超越加密貨幣的分布式賬本 本質定義: 區塊鏈是一個去中心化、…

用Finalshell連接服務器后出現文件目錄不顯示,且刷新報錯空指針問題記錄

修改SSH配置?編輯sshd_config?使用管理員權限編輯/etc/ssh/sshd_config文件,找到Subsystem相關配置。原配置為Subsystem sftp /usr/libexec/openssh/sftp-server使用“i”編輯文件將修改為Subsystem sftp internal-sftp修改完成后使用Esc命令,退出編輯…

C語言:游戲代碼分享

小游戲分享 目錄 小游戲分享 1.井字棋游戲 2.簡單計算器游戲 3.猜單詞 4.石頭剪刀布游戲 5.猜數字游戲 1.井字棋游戲 「33 棋盤上的思維博弈!與好友輪流落子,搶占先機,連成一線即可獲勝。簡單規則蘊含無限策略,展現你的戰術…

深度學習入門-卷積神經網絡(CNN)(下)

1-4、 深度學習入門-卷積神經網絡(CNN)(上)-CSDN博客 5、 卷積神經網絡(CNN)的實現 簡單網絡的構成是“Convolution - ReLU - Pooling - Affine - ReLU - Affine - Softmax”: 相關代碼&#…

Java 大視界 -- Java 大數據在智能交通智能公交站臺乘客流量預測與服務優化中的應用(349)

Java 大視界 -- Java 大數據在智能交通智能公交站臺乘客流量預測與服務優化中的應用(349)引言:正文:一、Java 全場景韌性調度系統(新增極端天氣 車型適配)1.1 極端天氣:暴雪 / 臺風的分鐘級響應…

數論內容主要包括哪些

數論(Number Theory)是數學中研究整數的性質及其相互關系的一個分支,被譽為“數學中的皇后”。它歷史悠久,內容豐富,既包含許多初等、直觀的問題,也涉及高深、抽象的理論。數論的主要內容包括以下幾個方面&…

springboot打包二次壓縮Excel導致損壞

springboot打包二次壓縮Excel導致損壞開發時,將Excel文件放到resources下,通過類加載器流讀取,返回api用于下載該Excel文件。我發現這樣下載的Excel被損壞了,無法打開,推測是springboot打包插件默認對resources下的所有…

huggingface筆記

1. huggingface的下載目錄 ~/.cache/huggingface 2. 如何修改hugging face的模型默認下載地址 huggingface的默認下載路徑在~/.cache/huggingface/hub/,但模型數據占用空間往往很大,可以用以下方法修改默認下載路徑。 方法一:在linux中指定環…

Redis3:Redis數據結構與命令全解析

目錄 1、redis數據結構介紹 1.1命令學習方式 1.1.1命令行查詢 2、redis的通用命令 2.1查找常見的通用命令 2.2常見的通用命令: 3、String類型 3.1String類型的常見命令 3.2Key的層級格式 3.2.1Key的結構 4、Hash類型 4.1Hash類型 4.2Hash類型常見命令 …

WebSocket 重連與心跳機制:打造堅如磐石的實時連接

在現代 Web 應用中,WebSocket 是實現實時通信的核心技術。但網絡環境復雜多變,如何確保連接穩定成為關鍵挑戰。本文將深入剖析 WebSocket 的重連與心跳機制,提供一套經過生產環境驗證的解決方案。 一、WebSocket 基礎封裝 首先我們實現一個具…

【代碼】Matlab鳥瞰圖函數

用matlab把圖像轉化為鳥瞰圖 代碼 clc clear close all I imread(road.png); figure(1) imshow(I) bevSensor load(birdsEyeConfig); birdsEyeImage transformImage(bevSensor.birdsEyeConfig,I); figure(2) imshow(birdsEyeImage)效果

網絡編程-java

Socket 套接字 Socket套接字,是由系統提供用于網絡通信的技術,是基于 TCP/IP 協議的網絡通信的基本單元。基于 Socket 套接字的網絡程序開發就是網絡編程。 應用層會調用操作系統提供的一組 api ,這組 api 就是 socket api(傳輸層…

CPU架構、三級緩存以及內存優化屏障

目錄 一、三級緩存和內存布局 二、CPU架構 (1)SMP對稱對處理器架構 (2)NUMA非統一內存架構 三、RCU機制在內核中的體現 四、內存優化屏障 (1)編譯器、CPU優化 (2)優化的問題…

HarmonyOS從入門到精通:動畫設計與實現之九 - 實用動畫案例詳解(下)

HarmonyOS動畫開發實戰(九):實用動畫案例詳解(下) 在上篇中,我們圍繞加載動畫、點贊反饋、下拉刷新等核心交互場景,探討了如何通過動畫提升用戶體驗。本篇將聚焦界面元素動效與特殊場景動畫&…

Node.js 聊天內容加密解密實戰教程(含緩存密鑰優化)

一、技術方案說明 本方案采用以下技術組合: 加密算法:AES-256-GCM(認證加密,防止篡改)密鑰派生:PBKDF2(10萬次迭代)緩存機制:內存緩存 定期輪換安全特性:隨機…

信息安全基礎專業面試知識點(上:密碼學與軟件安全)

密碼學DES加密流程56比特長度的密鑰K, 分組長度64比特,密文64比特初始置換 (IP):將輸入的64位明文塊進行置換,打亂其順序。分成左右兩半: 將置換后的64位數據分成左右兩部分,每部分32位。16輪迭代加密: 這是DES的核心&#xff0c…

Windows Server 2025 黃金dMSA攻擊漏洞:跨域攻擊與持久化訪問風險分析

網絡安全研究人員近日披露了Windows Server 2025中委托管理服務賬戶(dMSA,Delegated Managed Service Accounts)存在的"關鍵設計缺陷"。據Semperis公司向The Hacker News提供的報告顯示:"該漏洞可能導致高危害攻擊…

解鎖數據分析:從基礎概念到核心指標的全面指南

在數字化時代,數據已成為驅動業務決策的核心力量。無論是運營一款 APP、管理一家便利店,還是優化在線教育課程,理解數據的本質與關鍵指標都至關重要。本文將從數據的基本概念出發,拆解運營全流程中的核心指標,并分享數…

DiffPy-CMI詳細安裝教程

本章教程,主要記錄安裝DiffPy-CMI的具體安裝步驟。 DiffPy-CMI 是一個復雜建模框架,是高度靈活的 Python 模塊庫,專為晶體、納米材料及非晶態材料的納米結構建模而設計。 注意:DiffPy-CMI只支持在Linux和Mac上安裝,Windows上是不支持的。 一、準備工作 需要準備一臺Linux或…

中國各省市縣坡度數據(Tif/Excel)

數據簡介 昨天我們分享了中國120m精度的DEM數據(見前文),今天我們根據該數據計算中國的坡度數據,并根據中國省市縣行政區劃數據將其統計各省市縣坡度的最大、最小以及平均值,方便大家研究使用。 基于中國120米精度DEM生成的坡度數據&#xff…