python網絡爬蟲的基本使用

各位帥哥美女點點關注,有關注才有動力啊

網絡爬蟲

引言

我們平時都說Python爬蟲,其實這里可能有個誤解,爬蟲并不是Python獨有的,可以做爬蟲的語言有很多例如:PHP、JAVA、C#、C++、Python。

為什么Python的爬蟲技術會異軍突起呢?

Python火并不是因為爬蟲技術,而是AI人工智能、數據分析(GoogleAlphaGo)等等功能;這些Java其實也能做,而選擇Python做爬蟲是因為Python相對來說比較簡單,而且功能比較齊全。

什么是網絡爬蟲

網絡爬蟲(英語:web crawler),也叫網絡蜘蛛(spider),是一種用來自動瀏覽萬維網的網絡機器人。通俗來講,網絡爬蟲就是模擬瀏覽器發送網絡請求,接收請求響應,一種按照一定的規則,自動地抓取互聯網信息的程序。

原則上,只要是瀏覽器(客戶端)能做的事情,爬蟲都能夠做。

為什么要學習網絡爬蟲

互聯網大數據時代,給予我們的是生活的便利以及海量數據爆炸式的出現在網絡中。過去,我們通過書籍、報紙、電視、廣播或許信息,這些信息數量有限,且是經過一定的篩選,信息相對而言比較有效,但是缺點則是信息面太過于狹窄了。不對稱的信息傳導,以致于我們視野受限,無法了解到更多的信息和知識。 互聯網大數據時代,我們突然間,信息獲取自由了,我們得到了海量的信息,但是大多數都是無效的垃圾信息。 例如新浪微博,一天產生數億條的狀態更新,而在百度搜索引擎中,隨意搜一條就有成千上百萬條信息。 在如此海量的信息碎片中,我們如何獲取對自己有用的信息呢? 答案是篩選! 通過某項技術將相關的內容收集起來,在分析刪選才能得到我們真正需要的信息。 這個信息收集分析整合的工作,可應用的范疇非常的廣泛,無論是生活服務、出行旅行、金融投資、各類制造業的產品市場需求等等……都能夠借助這個技術獲取更精準有效的信息加以利用。 網絡爬蟲技術,雖說有個詭異的名字,讓能第一反應是那種軟軟的蠕動的生物,但它卻是一個可以在虛擬世界里,無往不前的利器。

瀏覽網站時所能看見的數據都可以通過爬蟲程序保存下來,例如:文字、圖片、音頻和視頻。

應用場景

  • 數據展示:將爬取的數據展示到網頁或者APP上,比如:百度新聞、今日頭條

  • 數據分析:從數據中尋找一些規律,比如:慢慢買(價格對比)、TIOBE排行等

  • 自動化測試:比如想要測試一個前端頁面的兼容性、前端頁面UI是否有bug,只需要模擬執行表單提交、鍵盤輸入等頁面操作

網絡爬蟲是否合法

爬蟲作為一種計算機技術就決定了它的中立性,因此爬蟲本身在法律上并不被禁止,但是利用爬蟲技術獲取數據這一行為是具有違法甚至是犯罪的風險的。所謂具體問題具體分析,正如水果刀本身在法律上并不被禁止使用,但是用來捅人,就不被法律所容忍了。

爬蟲技術與反爬蟲技術

爬蟲目前能造成的技術上影響在于野蠻爬取,即多線程爬取,從而導致網站癱瘓或不能訪問,這也是大多數網絡攻擊所使用的方法之一。

由于爬蟲會批量訪問網站,因此許多網站會采取反爬措施。例如:1.IP頻率、流量限制;2.請求時間窗口過濾統計;3.識別爬蟲等。

但這些手段都無法阻止爬蟲開發人員優化代碼、使用多IP池等方式規避反爬措施,實現大批量的數據抓取。由于網絡爬蟲會根據特定的條件訪問頁面,因而爬蟲的使用將占用被訪問網站的網絡帶寬并增加網絡服務器的處理開銷,甚至無法正常提供服務。

Robots協議

robots(也稱為爬蟲協議、機器人協議等)稱是“網絡爬蟲排除標準”是網站跟爬蟲間的一種協議(國際互聯網界通行的道德規范),用簡單直接的txt格式文本方式告訴對應的爬蟲被允許的權限,也就是說robots.txt是搜索引擎中訪問網站的時候要查看的第一個文件。

參考地址:https://www.zhihu.com/robots.txt

  • 以Allow開頭的URL地址:允許某爬蟲引擎訪問

  • 以Disallow開頭的URL地址:不允許某爬蟲引擎訪問

總之,盜亦有道,君子之約。

網絡爬蟲步驟及相關技術

抓包

  • 瀏覽器抓包(僅能抓取瀏覽器的數據包

  • 抓包工具fiddler(基本用于抓取HTTP

cookie與session的區別與連系?

User-Agent: 瀏覽器信息

HTTP與HTTPS

  • HTTP 與 HTTPS 有哪些區別?

(1)HTTP 是超文本傳輸協議,信息是明文傳輸,存在安全風險的問題。HTTPS 則解決 HTTP 不安全的缺陷,在 TCP 和 HTTP 網絡層之間加入了 SSL/TLS 安全協議,使得報文能夠加密傳輸。

(2)HTTP 連接建立相對簡單, TCP 三次握手之后便可進行 HTTP 的報文傳輸。而 HTTPS 在 TCP三次握手之后,還需進行 SSL/TLS 的握手過程,才可進入加密報文傳輸。

(3) HTTP 的端口號是 80,HTTPS 的端口號是 443。

(4)HTTPS 協議需要向 CA(證書權威機構)申請數字證書,來保證服務器的身份是可信的。

  • HTTPS 解決了 HTTP 的哪些問題?

HTTP 由于是明文傳輸,所以安全上存在以下三個風險:

竊聽風險,比如通信鏈路上可以獲取通信內容,用戶號容易沒。

篡改風險,比如強制植入垃圾廣告,視覺污染,用戶眼容易瞎。

冒充風險,比如冒充淘寶網站,用戶錢容易沒。

HTTPS 在 HTTP 與 TCP 層之間加入了 SSL/TLS 協議,可以很好的解決了上述的風險:

信息加密:交互信息無法被竊取,但你的號會因為「自身忘記」賬號而沒。

校驗機制:無法篡改通信內容,篡改了就不能正常顯示,但百度「競價排名」依然可以搜索垃圾

廣告。

身份證書:證明淘寶是真的淘寶網,但你的錢還是會因為「剁手」而沒。

可見,只要自身不做「惡」,SSL/TLS 協議是能保證通信是安全的。

  • HTTPS 是如何解決上面的三個風險的?

混合加密的方式實現信息的機密性,解決了竊聽的風險。

摘要算法的方式來實現完整性,它能夠為數據生成獨一無二的「指紋」,指紋用于校驗數據的完

整性,解決了篡改的風險。

將服務器公鑰放入到數字證書中,解決了冒充的風險。

快速入門

安裝requests

pip 是 Python 包管理工具,該工具提供了對Python 包的查找、下載、安裝和卸載的功能,現在大家用到的所有包不是自帶的就是通過pip安裝的。Python 2.7.9 + 或 Python 3.4+ 以上版本都自帶 pip 工具。

前端:npm install

后端:maven

  • 顯示版本和路徑

pip --version
  • 安裝指定版本的requests

pip install requests ? ? ? ? # 最新版本
pip install requests==2.11.0 # 指定版本
pip install requests>=2.11.0 # 最小版本

由于所有請求都需要經過fiddler這個抓包軟件進出。所以如果requests與fiddler一起使用,請不要使用requests最新版本,不然直接會卡死,降版本使用即可。

也可以直接通過PyCharm來安裝requests模塊,點擊File -> Settings -> 項目: python10,選擇Python解釋器,點擊 + 號,輸入選擇requests模塊并指定安裝版本號(例如:2.11.0),最后點擊 安裝包(I) 按鈕即可。

案例演示

創建純python項目,新建demo.py并導入requests模塊

# 導入模塊
import requests
# 通過requests模塊模擬發送get請求,并得到響應對象response
resp = requests.get(url)

response響應對象屬性介紹:

屬性說明
encoding文本編碼。例如:resp.encoding="utf-8"
status_code響應狀態碼。 200 -- 請求成功 4XX -- 客戶端錯誤 5XX -- 服務端響應錯誤
text響應體。
content字節方式響應體,會自動解碼gzip和deflate編碼的響應數據
url響應的URL地址。

  • 案例一:快速入門,爬取百度官網并保存到本地

請結合fiddler抓包工具進行以下代碼測試。

resp = requests.get("http://www.baidu.com/")

定制請求頭headers,請結合知乎網的Robots協議進行設置。偽裝User-Agent

resp = requests.get("http://www.zhihu.com/signin?next=%2F",headers={"User-agent": "bingbot"})

定制請求頭headers,模擬使用瀏覽器的User-Agent值。

resp = requests.get("http://www.baidu.com/",headers={"User-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"})

保存文件的方式可使用pathlibopen等兩種方式。

  • 案例二:傳遞URL參數

POST和GET請求方式在傳遞URL參數時,稍有不同。

GET方式POST方式
params={"key1":"value1","key2":"value2"}data={"key1":"value1","key2":"value2"}
response=requests.get(url,params=params)response=requests.post(url,data=data)

爬取必應搜索“中國”之后的網頁,保存為“中國.html”

resp = requests.get("https://cn.bing.com/search",headers={"User-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"},params={"q":"中國"})

requests缺點:不能爬取ajax動態加載的數據

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

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

相關文章

網頁模板素材網站 web前端網頁制作模板

在當今數字化時代,Web 前端網頁制作對于企業和個人來說至關重要。無論是企業官網、個人博客還是電商網站,一個美觀、功能性強且易于維護的網頁設計能夠有效提升用戶體驗和品牌形象。然而,從零開始設計一個網頁往往需要耗費大量的時間和精力&a…

ROS系列(一):ROS入門指南 —— 核心解析與版本演進

引言 機器人操作系統(ROS)的誕生,不僅是一場技術革命,更是一張重新定義機器人開發范式的藍圖。從實驗室的原型驗證到工業場景的規模化落地,從單機智能到群體協作,ROS以開源、模塊化和生態驅動的特性&#…

將 Docker 鏡像推送到 GitLab Container Registry 的完整步驟

一、前提準備 GitLab 項目: 在 GitLab 上擁有一個項目,例如 your-group/your-project-name。重要: 確保項目路徑(尤其是項目名稱部分)全部使用小寫字母。例如,如果初始是 Your-Project,請在項目設置中將其路徑修改為 y…

Java-HashMap基礎與擴展學習總結

?面試官?: “HashMap 是 Java 中最常用的數據結構之一,你能說說它的底層實現嗎?比如哈希沖突是怎么解決的?” ?你?(結合源碼與優化場景): “好的,HashMap 底層是數組鏈表/紅黑…

嵌入式學習之系統編程(五)進程(2)

一、進程的退出 (一)僵尸進程與孤兒進程 (二)相關函數 1、exit函數 2、_exit函數 3、atexit函數 二、進程空間的回收(相關函數) 1、wait函數 2、waitpid函數 3、練習 4、exec族 5、system函數 一…

AI時代新詞-Transformer架構:開啟AI新時代的關鍵技術

一、什么是Transformer架構? Transformer架構 是一種基于自注意力機制(Self-Attention Mechanism)的深度學習模型架構,最初由Vaswani等人在2017年的論文《Attention Is All You Need》中提出。它主要用于處理序列數據&#xff08…

基于cornerstone3D的dicom影像瀏覽器 第二十三章 mpr預設窗值與vr preset

文章目錄 前言一、mpr窗口預設窗值二、vr preset三、調用流程 前言 實現mpr窗口預設窗值,vr窗口預設配色 效果如下: 一、mpr窗口預設窗值 可參考 第十五章 預設窗值 邏輯一樣的,把windowWidth, windowCenter值轉換為voiRange值,…

shell之通配符及正則表達式

通配符與正則表達式 通配符(Globbing) 通配符是由 Shell 處理的特殊字符,用于路徑或文件名匹配。當 Shell 在命令參數中遇到通配符時,會將其擴展為匹配的文件路徑;若沒有匹配項,則作為普通字符傳遞給命令…

繼電保護與安全自動裝置:電力系統安全的守護神

電力系統是現代社會賴以生存的基礎設施,而繼電保護和安全自動裝置則是保障電力系統安全穩定運行的守護神。 它們默默無聞地工作著,在電力系統出現異常時,能夠迅速準確地切除故障,防止事故擴大,保障電力供應。 那么&…

Flink流處理基礎概論

文章目錄 引言Flink基本概述傳統數據架構的不足Dataflow中的幾大基本概念Dataflow流式處理宏觀流程數據并行和任務并行的區別Flink中幾種數據傳播策略Flink中事件的延遲和吞吐事件延遲事件的吞吐如何更好的理解事件的延遲和吞吐flink數據流的幾種操作輸入輸出轉換操作滾動聚合窗…

Tomcat 使用與配置全解

一、 Tomcat簡介 Tomcat服務器是Apache的一個開源免費的Web容器。它實現了JavaEE平臺下部分技術規范,屬于輕量級應用服務器。 1. Tomcat版本 Tomcat版本 JDK版本 Servlet版本 JSP版本 10.0.X 8 and later 5.0 3.0 9.0.x 8 and later 4.0 2.3 8.0.x 7…

Unity3D仿星露谷物語開發52之菜單頁面

1、目標 創建菜單頁面,可通過Esc鍵開啟或關閉。 當把鼠標懸停在上面時它會高亮,然后當點擊按鈕時標簽頁會被選擇。 2、 創建PauseMenuCanvas (1)創建Canvas 在Hierarchy -> PersistentScene -> UI下創建新的Cavans命名為…

Spring Boot 調優的 12 個關鍵節點

數據庫連接池調優:精準匹配系統資源 癥狀: 默認配置下,連接池資源使用不當,高并發時連接耗盡或排隊。 常見誤區: spring:datasource:hikari:maximum-pool-size: 1000 # 設置過大connection-timeout: 30000 # 設置…

前端流行框架Vue3教程:28. Vue應用

28. Vue應用 應用實例 每個 Vue 應用都是通過 createApp函數創建一個新的 應用實例 main.js import {createApp} from vue import App from ./App.vue// app:Vue的實例對象 // 在一個Vue項目中,有且只有一個Vue的實例對象 const app createApp(App)/* 根組件選項…

MongoDB 數據庫遷移:完整指南與最佳實踐

在現代數據驅動的應用中,數據庫遷移是一項常見的任務,無論是升級 MongoDB 版本、更換服務器硬件,還是遷移到云環境(如 MongoDB Atlas),都需要一個可靠的遷移策略。錯誤的遷移方式可能導致數據丟失、應用停機…

MQTT-Vue整合

Vue整合 依賴環境 nodejs 版本 > 18安裝 element plus npm install element-plus安裝 mqtt npm install mqtt初始化Vue項目 使用 vite 創建項目 執行命令 npm create vitelatest輸入項目名稱 vue-mqtt-demo MQTT連接 連接組件代碼 components/MqttDemo.vue <script…

IP 地址反向解析(IP反查域名)原理與應用

一、IP 地址反向解析的原理與技術細節 IP 地址反向解析&#xff08;Reverse IP Lookup&#xff09;是一種將 IP 地址映射回其關聯域名或主機名的網絡技術&#xff0c;與常見的正向 DNS 解析&#xff08;將域名解析為 IP 地址&#xff09;形成互補。這一過程在網絡安全研究、漏…

Mermaid 文件支持的圖表

Mermaid 文件后綴支持多種類型的圖表&#xff0c;包括但不限于&#xff1a; 流程圖&#xff1a;用于描述流程和決策的圖表&#xff0c;常用于業務流程的表示和分析。 時序圖&#xff1a;用于描述事件發生的順序和時序關系的圖表&#xff0c;常用于系統交互和消息傳遞的分析。 …

用 Python 構建自動駕駛的實時通信系統:讓車輛“交流”起來!

用 Python 構建自動駕駛的實時通信系統:讓車輛“交流”起來! 自動駕駛技術正加速變革全球交通體系,它不僅是機器學習與計算機視覺的勝利,更是一場 高效通信架構的革命。自動駕駛汽車需要實時交換信息,比如: 傳感器數據(雷達、激光雷達、攝像頭)V2V(車與車通信)V2X(…

PDF處理控件Aspose.PDF教程:以編程方式合并PDF文檔

合并 PDF 文檔是常見的需求——無論您是整理報告、合并發票還是整合掃描頁面。單一、統一的文件更易于在個人、學術或專業用途中共享、存儲和管理。 本文將向您展示如何使用 Aspose.PDF在C#、Java 和 Python中以編程方式合并 PDf 文件。 Aspose.PDF最新版下載 為什么使用 As…