国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python3網絡爬蟲實戰---17、爬蟲基本原理

hellowoody / 2349人閱讀

摘要:在前面我們講到了和的概念,我們向網站的服務器發送一個,返回的的便是網頁源代碼。渲染頁面有時候我們在用或抓取網頁時,得到的源代碼實際和瀏覽器中看到的是不一樣的。所以使用基本請求庫得到的結果源代碼可能跟瀏覽器中的頁面源代碼不太一樣。

上一篇文章:Python3網絡爬蟲實戰---16、Web網頁基礎
下一篇文章:Python3網絡爬蟲實戰---18、Session和Cookies

爬蟲,即網絡爬蟲,我們可以把互聯網就比作一張大網,而爬蟲便是在網上爬行的蜘蛛,我們可以把網的節點比做一個個網頁,爬蟲爬到這就相當于訪問了該頁面獲取了其信息,節點間的連線可以比做網頁與網頁之間的鏈接關系,這樣蜘蛛通過一個節點后可以順著節點連線繼續爬行到達下一個節點,即通過一個網頁繼續獲取后續的網頁,這樣整個網的節點便可以被蜘蛛全部爬行到,這樣網站的數據就可以被抓取下來了。

1. 爬蟲概述

可能上面的說明還是難以具體地描述爬蟲究竟是個什么,簡單來說,爬蟲就是獲取網頁并提取和保存信息的自動化程序,接下來對各個點進行說明:

獲取網頁

爬蟲首先要做的工作就是獲取網頁,在這里獲取網頁即獲取網頁的源代碼,源代碼里面必然包含了網頁的部分有用的信息,所以只要把源代碼獲取下來了,就可以從中提取我們想要的信息了。

在前面我們講到了 Request 和 Response 的概念,我們向網站的服務器發送一個 Request,返回的 Response 的 Body 便是網頁源代碼。所以最關鍵的部分就是構造一個 Request 并發送給服務器,然后接收到 Response 并將其解析出來,那這個流程可以怎樣來實現呢?總不能手工去截取網頁源碼把?

不用擔心,Python 里面提供了許多庫來幫助我們實現這個操作,如 Urllib、Requests 等,我們可以用這些庫來幫助我們實現 HTTP 請求操作,Request 和 Response 都可以用類庫提供的數據結構來表示,得到 Response 之后只需要解析數據結構中的 Body 部分即可,即得到網頁的源代碼,這樣我們可以用程序來實現獲取網頁的過程了。
提取信息

我們在第一步獲取了網頁源代碼之后,接下來的工作就是分析網頁源代碼,從中提取我們想要的數據,首先最通用的方法便是采用正則表達式提取,這是一個萬能的方法,但是在構造正則表達式的時候比較復雜且容易出錯。

另外由于網頁的結構是有一定規則的,所以還有一些根據網頁節點屬性、CSS 選擇器或 XPath 來提取網頁信息的庫,如 BeautifulSoup、PyQuery、LXML 等,使用這些庫可以高效快速地從中提取網頁信息,如節點的屬性、文本值等內容。

提取信息是爬蟲非常重要的部分,它可以使雜亂的數據變得清晰條理,以便于我們后續在對數據進行處理和分析。

保存數據

提取信息之后我們一般會將提取到的數據保存到某處以便后續數據處理使用。保存形式有多種多樣,如可以簡單保存為 TXT 文本或 Json 文本,也可以保存到數據庫,如 MySQL、MongoDB 等,也可保存至遠程服務器,如借助 Sftp 進行操作等。

自動化程序

說到自動化程序,意思即是說爬蟲可以代替人來完成這些操作。首先我們手工當然是可以提取這些信息的,但是當量特別大或者想快速獲取大量數據的話,肯定還是借助于程序。所以爬蟲就是代替我們來完成這份爬取數據的工作的自動化程序,它可以在抓取過程中進行各種異常處理、錯誤重試等操作,確保爬取持續高效地運行。

2. 能抓怎樣的數據

在網頁中我們能看到各種各樣的信息,最常見的便是常規網頁,其都對應著 HTML 代碼,而最常見的抓取便是抓取 HTML 源代碼。

另外可能有些網頁返回的不是 HTML 代碼,而是返回一個 Json 字符串,API 接口大多采用這樣的形式,方便數據的傳輸和解析,這種數據同樣可以抓取,而且數據提取更加方便。

此外我們還可以看到各種二進制數據,如圖片、視頻、音頻等等,我們可以利用爬蟲將它們的二進制數據抓取下來,然后保存成對應的文件名即可。

另外我們還可以看到各種擴展名的文件,如 CSS、JavaScript、配置文件等等,這些其實也是最普通的文件,只要在瀏覽器里面訪問到,我們就可以將其抓取下來。

以上的內容其實都對應著各自的URL,是基于 HTTP 或 HTTPS 協議的,只要是這種數據爬蟲都可以進行抓取。

3. JavaScript渲染頁面

有時候我們在用 Urllib 或 Requests 抓取網頁時,得到的源代碼實際和瀏覽器中看到的是不一樣的。

這個問題是一個非常常見的問題,現在網頁越來越多地采用 Ajax、前端模塊化工具來構建網頁,整個網頁可能都是由 JavaScript 渲染出來的,意思就是說原始的 HTML 代碼就是一個空殼,例如:



    
        
        This is a Demo
    
    
        

body 節點里面只有一個 id 為 container 的節點,但是注意到在 body 節點后引入了一個 app.js,這個便負責了整個網站的渲染。

在瀏覽器打開這個頁面時,首先會加載這個 HTML 內容,接著瀏覽器會發現其中里面引入了一個 app.js 文件,然后瀏覽器便會接著去請求這個文件,獲取到該文件之后便會執行其中的 JavaScript 代碼,而 JavaScript 則會改變 HTML 中的節點,向內添加內容,最后得到完整的頁面。

但是在用 Urllib 或 Requests 等庫來請求當前頁面時,我們得到的只是這個 HTML 代碼,它不會幫助我們去繼續加載這個 JavaScript 文件,這樣也就看不到瀏覽器中看到的內容了。

這也解釋了為什么有時我們得到的源代碼和瀏覽器中看到的是不一樣的。

所以使用基本 HTTP 請求庫得到的結果源代碼可能跟瀏覽器中的頁面源代碼不太一樣。對于這樣的情況,我們可以分析其后臺 Ajax 接口,也可使用 Selenium、Splash 這樣的庫來實現模擬 JavaScript 渲染,這樣我們便可以爬取 JavaScript 渲染的網頁的內容了。

在后文我們會詳細介紹對于 JavaScript 渲染的網頁的采集方法。

4. 結語

本節介紹了爬蟲的一些基本原理,了解了如上內容可以幫助我們在后面編寫爬蟲的時候更加得心應手。

上一篇文章:Python3網絡爬蟲實戰---16、Web網頁基礎
下一篇文章:Python3網絡爬蟲實戰---18、Session和Cookies

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44051.html

相關文章

  • Python3網絡爬蟲實戰---18、Session和Cookies

    摘要:而在中對象用來存儲特定用戶會話所需的屬性及配置信息。當會話過期或被放棄后,服務器將終止該會話。,即該是否僅被使用安全協議傳輸。安全協議有,等,在網絡上傳輸數據之前先將數據加密。 上一篇文章:Python3網絡爬蟲實戰---17、爬蟲基本原理下一篇文章:Python3網絡爬蟲實戰---19、代理基本原理 在瀏覽網站的過程中我們經常會遇到需要登錄的情況,有些頁面只有登錄之后我們才可以訪問...

    SHERlocked93 評論0 收藏0
  • Python3網絡爬蟲實戰---16、Web網頁基礎

    摘要:,簡稱為,是一種腳本語言,和配合使用,提供給用戶的只是一種靜態的信息,缺少交互性。這就是網頁的三大基本組成。父節點擁有子節點,同級的子節點被稱為兄弟節點。選擇屬于其父節點的首個節點的每個節點。同上,從最后一個 上一篇文章:Python3網絡爬蟲實戰---15、爬蟲基礎:HTTP基本原理下一篇文章:Python3網絡爬蟲實戰---17、爬蟲基本原理 我們平時用瀏覽器訪問網站的時候,一個...

    netScorpion 評論0 收藏0
  • Python3網絡爬蟲實戰---19、代理基本原理

    摘要:所以使用代理隱藏真實的,讓服務器誤以為是代理服務器的在請求自己。參考來源由于涉及到一些專業名詞知識,本節的部分內容參考來源如下代理服務器維基百科代理百度百科上一篇文章網絡爬蟲實戰和下一篇文章網絡爬蟲實戰使用發送請求 上一篇文章:Python3網絡爬蟲實戰---18、Session和Cookies下一篇文章:Python3網絡爬蟲實戰---20、使用Urllib:發送請求 我們在做爬蟲...

    gougoujiang 評論0 收藏0
  • Python3網絡爬蟲實戰---14、部署相關庫的安裝:Scrapyrt、Gerapy

    摘要:相關鏈接官方文檔安裝推薦使用安裝,命令如下命令執行完畢之后即可完成安裝。的安裝是一個分布式管理模塊,本節來介紹一下的安裝方式。如果沒有錯誤報出,則證明庫已經安裝好了。上一篇文章網絡爬蟲實戰部署相關庫下一篇文章網絡爬蟲實戰爬蟲基礎基本原理 上一篇文章:Python3網絡爬蟲實戰---13、部署相關庫ScrapydClient、ScrapydAPI下一篇文章:Python3網絡爬蟲實戰--...

    nihao 評論0 收藏0
  • Python3網絡爬蟲實戰---10、爬蟲框架的安裝:PySpider、Scrapy

    摘要:所以如果對爬蟲有一定基礎,上手框架是一種好的選擇。缺少包,使用安裝即可缺少包,使用安裝即可上一篇文章網絡爬蟲實戰爬取相關庫的安裝的安裝下一篇文章網絡爬蟲實戰爬蟲框架的安裝 上一篇文章:Python3網絡爬蟲實戰---9、APP爬取相關庫的安裝:Appium的安裝下一篇文章:Python3網絡爬蟲實戰---11、爬蟲框架的安裝:ScrapySplash、ScrapyRedis 我們直接...

    張憲坤 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<