🌿自動化的思想
任何領域的發展原因————“不斷追求生產方式的改革,即使得付出與耗費精力越來愈少,而收獲最大化”。由此,創造出方法和設備來提升效率。
- 如新聞的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基礎:重要程度??
因為爬蟲代碼涉及到對這些元素的分析,不懂標簽,得到文件也看不懂,更別提爬取了