爬蟲學習————開始

在這里插入圖片描述


🌿自動化的思想

任何領域的發展原因————“不斷追求生產方式的改革,即使得付出與耗費精力越來愈少,而收獲最大化”。由此,創造出方法和設備來提升效率。

  • 如新聞的5W原則直接讓思考過程規范化、流程化。
  • 或者前端框架/后端輪子的出現,使得構建項目可以自動化,減少了不必要勞動。
  • 爬蟲也是如此,主要是為了執行自動化搜集、篩選信息的行為。比如想下載一個網站的所有壁紙圖片,人工操作太麻煩,而使用爬蟲可以自動化這一系列的操作。

一些計算機思想

  • 自動化思維:所以,作為一個前后端開發者,面對問題,自動化思想總是很有用的,面對問題,下意識思考是否可以自動化會使得效率提升(當然,也要評估性價比)。
  • 性價比思想:不是可以改進效率的方法就值得被推崇,在實際生產中,一些方法理論上可以改進效率,但也要考慮改革的成本。我們的目的是追求最終結果的極致性價比。(這是因為,生產領域必然要考慮除了理論外的其他現實因素,這也是項目/思想能否較好落地的因素。

🍂爬蟲的出現與自動化前提

爬蟲的出現是對web信息處理這一過程的自動化實現。

自動化的局限

在當下,計算機/設備只能對信息進行規定好的有限的思考和計算,不像人腦可以處理、自主學習。

  • 題外話:(AI大模型看起來像人類,但背后是機器學習的那套,本身不具備思考能力,而是預測能力。在給足了充足的信息后,用戶的行為和偏好很容易預測(如,視頻推薦算法也是類似思想),由此,遠沒有自主思考的產生。)

自動化的前提

不是所有解決問題的方法都可以自動化,重復的,有規律的才可以。

  • 舉例:爬蟲:獲取網頁信息,下載。/密碼爆破:不斷輸入密碼,嘗試。

🌿爬蟲

🍂定義

網絡爬蟲,是一種按照一定的規則,自動地在互聯網上瀏覽網頁并獲取信息的程序或者腳本。

  • 網絡爬蟲與網絡有關,由此要了解計算機網絡知識
  • 網頁:萬維網(一種在互聯網上面向大眾提供的服務,一個基于超文本的信息檢索系統,通過互聯網將全球的計算機網絡連接起來,使用戶能夠通過瀏覽器訪問和瀏覽網頁。)
    • 超文本:即把一切資源以web形式呈現,由此,需要了解HTTP相關知識(推薦書籍:《HTTP圖解》)

🍂爬蟲原理理解

● 一般流程

網絡(互聯網連接)[PC完成] ——————> 服務器連接[PC、瀏覽器完成] ——————> HTTP請求發起[瀏覽器完成] ——————> HTTP請求發送給服務器[PC完成] ——————> 服務器返回包接收、拆包[PC完成] ——————> web內容分析、渲染、展現[瀏覽器完成]

解釋

PC連接上互聯網后,再連接到服務器,向它發起HTTP服務請求,服務器在沒問題的情況下返回它所需要的內容。

  • 連接互聯網有PC的網絡模塊與系統應用完成,而不是它上面的第三方應用。沒有PC的網絡模塊支持,應用也上不了網。即Pc網絡模塊(硬件)才是一切的基礎。
  • 常見使用過程中,發起請求的功能由瀏覽器代替用戶執行,從而生成HTTP請求。而爬蟲要自己發起,由此要編寫一個可以像服務器發送HTTP請求的代碼嘍。
  • 請求的接收:常見的也是由PC接收后解析。而爬蟲只要有用的信息,所以自己自定義解析規則,寫一個自動化解析的代碼。

● 使用了爬蟲的自動化流程

兩種方式對比總結:

  • 手動: 手動發起HTTP請求,依靠瀏覽器解析得到的web內容,用戶直接觀看。需要用戶一次次的點擊。
  • 爬蟲: 爬蟲自動發起HTTP請求,自動接收內容,自動處理拆包,自動分析提取需要的內容,自動存儲內容。能用循環實現自動化重復操作,不需要人一個個點擊且比人快得多

本質就是把手動的全部過程都用代碼表達了,而寫加上了篩選規則和循環,使得爬蟲可以不用手動控制(因為循環)的自主完成對內容的篩選(因為篩選規則)。

● 配套圖

服務器與PC(python爬蟲在PC上是如何實現的:相關庫以及作用)

  • 解釋了爬蟲流程:發送HTTP請求——>解析web內容——>篩選內容——>存儲內容
  • 以及PC與服務器上的HTTP服務的交互
    在這里插入圖片描述

anconda的原理
在這里插入圖片描述

python進程下的爬蟲

  • 即本質是進程間的交互,服務器提供HTTP服務的進程與Pc上爬蟲進程的交互
  • 涉及到網絡分層模型
  • 服務器提供的服務多種多樣,除了HTTP服務還有SQL數據庫服務。即PC可以使用服務器提供的多種服務,根據提供的服務不同,應用層發送的內容不同(萬維網服務為web數據,數據庫服務為數據庫文件…)
    在這里插入圖片描述

🍂爬蟲要注意啥

法律法規

  • 合法性:不是所有資源都可以爬取,要遵守相關法律法規,保護自己也保護他人
  • 惡意爬蟲:指不遵守法規且用技術來掩蓋自己的蹤跡,使得追查起來困難或者不可行

爬蟲與背后的流量請求

提供服務要消耗資源(電費、設備維護、域名、IP費用…),而每次的爬蟲請求會與目標服務器交互,由此產生消耗,同時也會占據資源,影響正常用戶的使用(最典型的例子:12306搶票)。由此,會給服務商提供負擔。

  • 無論是作為服務商或者用戶,過度使用爬蟲對雙方都毫無意義,只有負向收益。而且,使用爬蟲爬取沒用信息對程序員也沒啥用啊(😏畢竟要網絡攻擊有別的方法)

🍂一個入門例子

使用爬蟲爬取豆瓣電影排行榜,感受自動化過程(本站就有教程,自行搜索,關鍵在于配置python環境,代碼復制下來就能跑)


🌿學習爬蟲的準備

🍂環境配置

本質上,你需要了解一種圖靈完備語言(指的是python、Java…),但常見的用python,變成語言各有所長,而python在這方面最好用。
所以,下載python并且下載相關庫

  • 推薦內容
    • anaconda(管理多版本python、隔離環境,允許不同項目支持不同python版本、機器學習初學的好軟件)
    • 環境變量(了解環境變量的作用)
    • 理解文件相對路徑、絕對路徑以及CMD當前運行位置不同對應的不同影響

🍂理論知識

● 最基礎前提

  • 基本的網絡知識:重要程度?????

爬蟲的精髓所在,在得到文件后就好處理(你瞪眼法人工分析也可以😏),關鍵是如何請求,如何得到。所以,這部分最重要。

● 次要基礎

  • HTTP協議基礎:重要程度???

了解這個,才能在代碼里模擬瀏覽器發送HTTP請求,實現發送請求自動化(一般是瀏覽器檢測用戶點擊一次才發一次請求,我們要讓這個過程自動化)

● 最末流基礎

  • Python編程基礎:重要程度??

至少有編程語言基礎,python就可以邊寫爬蟲邊學了。(不然還要建立編程語言的基礎,學習爬蟲會困難一點)

  • HTML和CSS基礎:重要程度??

因為爬蟲代碼涉及到對這些元素的分析,不懂標簽,得到文件也看不懂,更別提爬取了

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

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

相關文章

每天五分鐘機器學習:KTT條件

本文重點 在前面的課程中,我們學習了拉格朗日乘數法求解等式約束下函數極值,如果約束不是等式而是不等式呢?此時就需要KTT條件出手了,KTT條件是拉格朗日乘數法的推廣。KTT條件不僅統一了等式約束與不等式約束的優化問題求解范式,KTT條件給出了這類問題取得極值的一階必要…

leetcode0829. 連續整數求和-hard

1 題目: 連續整數求和 官方標定難度:難 給定一個正整數 n,返回 連續正整數滿足所有數字之和為 n 的組數 。 示例 1: 輸入: n 5 輸出: 2 解釋: 5 2 3,共有兩組連續整數([5],[2,3])求和后為 5。 示例 2: 輸入: n 9 輸出: …

window 顯示驅動開發-線性伸縮空間段

線性伸縮空間段類似于線性內存空間段。 但是,伸縮空間段只是地址空間,不能容納位。 若要保存位,必須分配系統內存頁,并且必須重定向地址空間范圍以引用這些頁面。 內核模式顯示微型端口驅動程序(KMD)必須實…

Cadence 高速系統設計流程及工具使用三

5.8 約束規則的應用 5.8.1 層次化約束關系 在應用約束規則之前,我們首先要了解這些約束規則是如何作用在 Cadence 設計對象上的。Cadence 中對設計對象的劃分和概念,如表 5-11 所示。 在 Cadence 系統中,把設計對象按層次進行了劃分&#…

ScaleTransition 是 Flutter 中的一個動畫組件,用于實現縮放動畫效果。

ScaleTransition 是 Flutter 中的一個動畫組件,用于實現縮放動畫效果。它允許你對子組件進行動態的縮放變換,從而實現平滑的動畫效果。ScaleTransition 通常與 AnimationController 和 Tween 一起使用,以控制動畫的開始、結束和過渡效果。 基…

深入解析:如何基于開源p-net快速開發Profinet從站服務

一、Profinet協議與軟協議棧技術解析 1.1 工業通信的"高速公路" Profinet作為工業以太網協議三巨頭之一,采用IEEE 802.3標準實現實時通信,具有: 實時分級:支持RT(實時)和IRT(等時實時)通信模式拓撲靈活:支持星型、樹型、環型等多種網絡結構對象模型:基于…

m個n維向量組中m,n的含義與空間的關系

向量的維度與空間的關系&#xff1a; 一個向量的維度由其分量個數決定&#xff0c;例如 ( n ) 個分量的向量屬于 Rn空間 。 向量組張成空間的維度&#xff1a; 當向量組有 ( m ) 個線性無關的 ( n ) 維向量時&#xff1a; 若 ( m < n )&#xff1a; 這些向量張成的是 Rn中的…

excel大表導入數據庫

前文介紹了數據量較小的excel表導入數據庫的方法&#xff0c;在數據量較大的情況下就不太適合了&#xff0c;一個是因為mysql命令的執行串長度有限制&#xff0c;二是node-xlsx這個模塊加載excel文件是整個文件全部加載到內存&#xff0c;在excel文件較大和可用內存受限的場景就…

Python 爬蟲基礎入門教程(超詳細)

一、什么是爬蟲&#xff1f; 網絡爬蟲&#xff08;Web Crawler&#xff09;&#xff0c;又稱網頁蜘蛛&#xff0c;是一種自動抓取互聯網信息的程序。爬蟲會模擬人的瀏覽行為&#xff0c;向網站發送請求&#xff0c;然后獲取網頁內容并提取有用的數據。 二、Python爬蟲的基本原…

Spring Security 深度解析:打造堅不可摧的用戶認證與授權系統

Spring Security 深度解析&#xff1a;打造堅不可摧的用戶認證與授權系統 一、引言 在當今數字化時代&#xff0c;構建安全可靠的用戶認證與授權系統是軟件開發中的關鍵任務。Spring Security 作為一款功能強大的 Java 安全框架&#xff0c;為開發者提供了全面的解決方案。本…

【物聯網】基于樹莓派的物聯網開發【1】——初識樹莓派

使用背景 物聯網開發從0到1研究&#xff0c;以樹莓派為基礎 場景介紹 系統學習Linux、Python、WEB全棧、各種傳感器和硬件 接下來程序貓將帶領大家進軍物聯網世界&#xff0c;從0開始入門研究樹莓派。 認識樹莓派 正面圖示&#xff1a; 1&#xff1a;樹莓派簡介 樹莓派…

第21節:深度學習基礎-激活函數比較(ReLU, Sigmoid, Tanh)

1. 引言 在深度學習領域,激活函數是神經網絡中至關重要的組成部分 它決定了神經元是否應該被激活以及如何將輸入信號轉換為輸出信號 激活函數為神經網絡引入了非線性因素,使其能夠學習并執行復雜的任務 沒有激活函數,無論神經網絡有多少層,都只能表示線性變換,極大地限…

Fiori學習專題三十:Routing and Navigation

實際上我們的頁面是會有多個的&#xff0c;并且可以在多個頁面之間跳轉&#xff0c;這節課就學習如何在不同頁面之間實現跳轉。 1.修改配置文件manifest.json&#xff0c;加入routing&#xff0c;包含三個部分&#xff0c;config,routes,targets; config &#xff1a; routerC…

【HarmonyOS NEXT+AI】問答05:ArkTS和倉頡編程語言怎么選?

在“HarmonyOS NEXTAI大模型打造智能助手APP(倉頡版)”課程里面&#xff0c;有學員提到了這樣一個問題&#xff1a; 鴻蒙的主推開發語言不是ArkTS嗎&#xff0c;本課程為什么使用的是倉頡編程語言&#xff1f; 這里就這位同學的問題&#xff0c;統一做下回復&#xff0c;以方便…

Booth Encoding vs. Non-Booth Multipliers —— 穿透 DC 架構看乘法器的底層博弈

目錄 &#x1f9ed; 前言 &#x1f331; 1. Non-Booth 乘法器的實現原理&#xff08;也叫常規乘法器&#xff09; &#x1f527; 構建方式 ?? 例子&#xff1a;4x4 Non-Booth 乘法器示意 &#x1f9f1; 硬件結構 ? 特點總結 ? 2. Booth Encoding&#xff08;布斯編碼…

GET請求如何傳復雜數組參數

背景 有個歷史項目&#xff0c;是GET請求&#xff0c;但是很多請求還是復雜參數&#xff0c;比如&#xff1a;參數是數組&#xff0c;且數組中每一個元素都是復雜的對象&#xff0c;這個時候怎么傳參數呢&#xff1f; 看之前請求直接是拼接在url后面 類似&items%5B0%5D.…

iOS App 安全性探索:源碼保護、混淆方案與逆向防護日常

iOS App 安全性探索&#xff1a;源碼保護、混淆方案與逆向防護日常 在 iOS 開發者的日常工作中&#xff0c;我們總是關注功能的完整性、性能的優化和UI的細節&#xff0c;但常常忽視了另一個越來越重要的問題&#xff1a;發布后的應用安全。 尤其是對于中小團隊或獨立開發者&…

A* (AStar) 尋路

//調用工具類獲取路線 let route AStarSearch.getRoute(start_point, end_point, this.mapFloor.map_point); map_point 是所有可走點的集合 import { _decorator, Component, Node, Prefab, instantiate, v3, Vec2 } from cc; import { oops } from "../../../../../e…

深度解析動態IP業務核心場景:從技術演進到行業實踐

引言&#xff1a;動態IP的技術演進與行業價值 在數字化轉型加速的今天&#xff0c;IP地址已從單純的網絡標識演變為支撐數字經濟的核心基礎設施。動態IP作為靈活高效的地址分配方案&#xff0c;正突破傳統認知邊界&#xff0c;在網絡安全防護、數據價值挖掘、全球業務拓展等領…

MySQL 性能調優:從執行計劃到硬件瓶頸

MySQL 性能調優&#xff1a;從執行計劃到硬件瓶頸 一、性能調優的宏觀視角與核心挑戰 在數字化浪潮下&#xff0c;企業數據量呈指數級增長&#xff0c;MySQL 作為主流關系型數據庫&#xff0c;面臨著巨大的性能壓力。某電商平臺日均訂單量突破千萬&#xff0c;高峰期數據庫響…