程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

100天精通Python(爬蟲篇)——第43天:爬蟲入門知識

編輯:Python

文章目錄

  • 每篇前言
  • 一、爬蟲概述
    • 1. 為什麼要學習爬蟲?
    • 2. 爬蟲與Python
    • 3. 爬蟲合法嗎?
    • 4. 爬蟲的矛與盾
    • 5. 爬蟲原理圖 and 流程圖
  • 二、相關技術介紹
    • 1. HTML 與 CSS
    • 2. URL網址解釋
    • 3. HTTP 與 HTTРS
      • (1)常見請求方式
      • (2)常見請求頭
      • (3)常見請求狀態碼
    • 4. Chrome浏覽器分析網站
    • 5. Session與Cookie
    • 6. Ajax請求
  • 三、如何讓學習更加高效呢?

每篇前言

  • 作者介紹:Python領域優質創作者、華為雲享專家、阿裡雲專家博主、2021年CSDN博客新星Top6

  • 本文已收錄於Python全棧系列專欄:《100天精通Python從入門到就業》
  • ​​此專欄文章是專門針對Python零基礎小白所准備的一套完整教學,從0到100的不斷進階深入的學習,各知識點環環相扣
  • 訂閱專欄後續可以閱讀Python從入門到就業100篇文章還可私聊進兩百人Python全棧交流群(手把手教學,問題解答);進群可領取80GPython全棧教程視頻 + 300本計算機書籍:基礎、Web、爬蟲、數據分析、可視化、機器學習、深度學習、人工智能、算法、面試題等。
  • 加入我一起學習進步,一個人可以走的很快,一群人才能走的更遠!


一、爬蟲概述

1. 為什麼要學習爬蟲?

對於個人

  • 在浏寬到一些優秀的讓人血脈噴張的圖片時.總想保存起來留為日後做桌面上的壁紙

  • 在浏寬到一些重要的數據時(各行各業),希望保留下來日後為自己進行各種銷售行為增光添彩.在浏覽到一些奇奇怪怪的勁爆視頻時,希望保存在硬盤裡供日後慢慢品鑒

  • 在浏覽到一些十分優秀的歌聲曲目時,希望保存下來供我們在煩悶的生活中增添一份精彩

對於爬蟲工程師

  • 公司數據需求

  • 數據分析

  • 智能產品練習數據

2. 爬蟲與Python

爬蟲一定要用Python麼? 非也~用Java也行,C也可以。請各位記住,編程語言只是工具.抓到數據是你的目的用什麼工具去達到你的目的都是可以的。和吃飯樣,可以用叉子也可以用筷子,最終的結果都是你能吃到飯。那為什麼大多數人喜歡用Python呢? 答案:因為Python寫爬蟲簡單。不理解? 問:為什麼吃米飯不用刀叉? 用筷子? 因為簡單好用!

而Python是眾多編程語言中,小白上手最快,語法最簡單,更重要的是,這貨有非常多的關於爬蟲能用到的第三方支持庫說直白點兒就是你用筷子吃飯,我還附送你一個傭人幫你吃!這樣吃的是不是更賣了。更容易了~

3. 爬蟲合法嗎?

首先,爬蟲在法律上是不被禁止的。也就是說法律是允許爬蟲存在的但是,爬蟲也具有違法風險的就像菜刀一樣,法律是允許菜刀的存在的。但是你要是用來砍人,那對不起,沒人慣著你就像王欣說過的,技術是無罪的。主要看你用它來干嘛比方說有些人就利用爬蟲+一些黑客技術每秒鐘對著bb撸上十萬八千次那這個肯定是不被允許的。

爬蟲分為善意的爬蟲和惡意的爬蟲

  • 善意的爬蟲:不破壞被爬取的網站的資源 (正常訪問,一般頻率不高,不竊取用戶隱私)
  • 惡意的爬蟲:影響網站的正常運營 (搶票,秒殺瘋狂solo網站資源造成網站宕機)

綜上,為了避免進橘子我們還是要安分守已時常優化自己的爬蟲程序避免干擾到網站的正常運行,井且在使用爬取到的數據時,發現涉及到用戶隱私和商業機密等敏感內容時,一定要及時終止爬取和傳播。

4. 爬蟲的矛與盾

反爬機制:門戶網站,可以通過制定相應的策略或者技術手段,防止爬蟲程序進行網站數據的爬取。

反反爬策略:爬蟲程序可以通過制定相關的策略或者技術手段,破解門戶網站中具備的反爬機制,從而可以獲取戶網站中相關的數據。個人建議:別強行反反爬,可能會已經涉及惡意爬蟲=

robots.txt協議:君子協議,規定了網站中哪些數據可以被爬蟲爬取哪些數據不可以被爬取。

5. 爬蟲原理圖 and 流程圖

爬蟲原理圖:

爬蟲流程圖:

二、相關技術介紹

1. HTML 與 CSS

(1)HTML全稱 “超文本標記語言",與程序設計語言有所區別,無邏輯結構,采用標記方式進行網頁構建,使用<>將標記括起來


HTML標簽如下:

標簽名說明<p>段落標記<a>超鏈接href超鏈接地址<img>圖片src圖片存放路徑<span>行內標簽<li>列表項<div>劃分HTML塊<table>表格標記<tr>行標記<td>列標記h1~h6標題

(2)CSS基礎

  • 層疊樣式表
  • 控制HTML頁面的樣式和布局
  • 使用{}將樣式定義括起來

CSS選擇器:

  • 元素選擇器(了解):元素選擇器根據元素名稱來選擇HTML元素
  • id選擇器(重要):使用HTML元素的id屬性來選擇唯一特定元素
  • 類選擇器(非常重要)選擇有特定class屬性的HTML元素
  • 案例(選中標題):先找到div class='p12',在取下面a標簽下的文字即可

2. URL網址解釋

案例網址https://baike.baidu.com/item/%E8%99%8E/865?fromtitle=%E8%80%81%E8%99%8E&fromid=65781

URL(網址)是Uriform Resource Locator的簡寫,統一資源定位符。URL由以下幾部分組成:

  • 1、協議的類型。如:https
  • 2、主機名稱/域名。如:baike.baidu.com
  • 3、端口號
  • 4、查找路徑。如:865?
  • 5、查詢參數(為後所有內容)。如:fromtitle=%E8%80%81%E8%99%8E&fromid=65781,采用鍵值對形式,多個鍵值對用&隔開
  • 6、錨點,前端用來做面定位的。現在一些前後端分離項目,也用錨點來做導航
    • 前端定位:https://baike. baidu.com/item/*E5488%98%E8%8BKA5%E8%88%B1#2
    • 錨點導航:動的是#之後的內容,根據錯點去請求數據 https://music.163.com/#/friend

3. HTTP 與 HTTРS

HTTP協議:全稱是HyperText Transfer Protocal ,中文意思是超文本傳輸協議,是一 種發布和接收HTML (HyperText Markuup Language)頁面的方法。服務器端口號為:80

HTTPS協議:全稱: Hyper Text Transfer Protocol over SecureSocket Layer,是 HTTP協議的加密版本,在HTTP下加入了SSL層, 服務器端口號是:443

更多知識點參考:圖解網絡協議

(1)常見請求方式

http協議規定了浏覽器與服務器進行數據交互的過程中必須要選擇一種交互的方式。在HTTP協議中,定義了八種請求方式,常見的有get請求與post請求。

GET請求:一般情況下,只從服務器獲取數據下來,並不會對服務器資源產生任何影響的時候會使用get請求

POST請求:向服務器發送數據(登錄)、、上傳文件等,會對服務器資源產生影響的時候會使用Post請求。請求參數在 Form Data

(2)常見請求頭

http協議中,向服務器發送-一個請求,數據分為三部分

  • 第一個是把數據放在urI中
  • 第二個是把數據放在body中(post請求時)
  • 第三個就是把數據放在head中

常見的請求頭參數:

  • user-agent:浏覽器名稱
  • referer:表明當前這個請求是從哪個ur|過來的
  • cookie:http協議是無狀態的。也就是同一個人發送了兩次請求。服務器沒有能力知道這兩個請求是否來自同一個人。而帶上cookie就識別為登錄過的用戶或者同一個請求兩次

(3)常見請求狀態碼

  • 200:請求正常,服務器正常的返回數據
  • 301:永久重定向。比如訪問 http://www.360buy.com (京東以前的網址)的時候會重定向到:https://www.jd.com/
  • 404:請求的url在服務器 上找不到,換句話說就是請求的url錯誤.
  • 418:發送請求遇到服務器端反爬蟲,服務器拒絕響應數據
  • 500:服務器內部錯誤,可能是服務器出現了bug

4. Chrome浏覽器分析網站

打開谷歌浏覽器:右鍵 - 》 檢查

  • Elements:可以幫助我們分析網頁結構,獲取我們想要的數據
  • Console控制台:打印輸出網站的一-些信息,比如說網站的招聘信息
  • Sources:相當於一個文件夾一樣,加載這個網頁所需要的所有的源文件,除了Elements的源代碼之外,還有一些CSS文件、JS文件等。
  • Network:查看整個網頁發送的所有網絡請求。一般我們想要去查看某- 個請求的信息,都可以到這裡面去看

5. Session與Cookie

Session與Cookie是用於保持HTTP長時間連接狀態的技術

Session

  • Session代表服務器與浏覽器的一次會話過程。
  • Session是一 種服務器端的機制,Session對象用來存儲特定用戶會話所需的信息。
  • Session由服務器端生成,保存在服務器的內存、緩存、硬盤或數據庫中。


Cookie:是由服務端生成後發送給客戶端(通常是浏覽), Cookie總 是保
存在客戶端

Cookie的基本原理

  • 1、創建Cookie
  • 2、設置存儲Cookie
  • 3、發送Cookie
  • 4、讀取Cookie

6. Ajax請求

  • Ajax在浏覽器與Web服務器之間使用異步數據傳輸。這樣就可以使網頁從服務器請求少量的信息,而不是整個頁面。

  • Ajax技術獨立於浏覽器和平台。

  • Ajax一般返回的是JSON,直接對Ajax地址進行Post或get,就返回JSON數據了

  • 判斷是否為Ajax生成數據,看在滾動網頁的時候是否發生了刷新,如果頁面沒有刷新說明數據自動生成,就是Ajax渲染到界面上的

三、如何讓學習更加高效呢?

嫌博主更新慢的小伙伴牛客網上號自行刷題

1. 編程小白選手

很多剛入門編程的小白學習了基礎語法,卻不知道語法的用途,不知道如何加深映像,不知道如何提升自己,這個時候每天刷自主刷一道題就非常重要(百煉成神),可以去牛客網上的編程初學者入門訓練。該專題為編程入門級別,適合剛學完語法的小白練習,題目涉及編程基礎語法,基本結構等,每道題帶有練習模式和考試模式,可還原考試模式進行模擬,也可通過練習模式進行練習。

鏈接地址:牛客網 | 編程初學者入門訓練

2. 編程進階選手

當基礎練習完已經逐步掌握了各知識要點後,這個時候去專項練習中學習數據結構、算法基礎、計算機基礎等。先從簡單的入手,感覺上來了再做中等難度,以及較難的題目。這三樣是面試中必考的知識點,我們只有堅持每日自己去多加練習,拒絕平躺持續刷題,不斷提升自己才能沖擊令人滿意的公司。

鏈接地址:牛客網 | 專項練習

速度上號,大家一起沖擊大廠,有疑問評論區留言解答!!!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved