除了百度百科所講,通俗來說,我平時瀏覽的頁面大都是HTML頁面,包括咱們平時瀏覽的新聞,門戶網站等都是將文字內容鑲嵌在HTML代碼中的,好比騰訊新聞的這篇文章:css
爬蟲要作的能夠簡單理解爲利 用程序來獲取咱們須要的網絡上的內容,包括文字,視頻,圖片等信息 稱之爲 數據。html
首先你要知道 當你點擊一下百度,發生了什麼,能把你想要的數據返回到你的電腦屏幕上ajax
簡單來講這段過程發生瞭如下四個步驟:正則表達式
瀏覽器經過 DNS服務器 查找域名對應的 IP地址;數據庫
向 IP地址 對應的 Web服務器 發送請求;瀏覽器
Web服務器 響應請求,發回 HTML頁面;安全
瀏覽器解析 HTML內容,並顯示出來。服務器
HTTP協議
(HyperText Transfer Protocol,超文本傳輸協議):是一種發佈和接收 HTML頁面的方法。網絡
HTTPS
(Hypertext Transfer Protocol over Secure Socket Layer)簡單講是HTTP的安全版,在HTTP下加入SSL層。post
SSL
(Secure Sockets Layer 安全套接層)主要用於Web的安全傳輸協議,在傳輸層對網絡鏈接進行加密,保障在Internet上數據傳輸的安全。
HTTP
的端口號爲80
,HTTPS
的端口號爲443
HTTP工做原理
網絡爬蟲抓取過程能夠理解爲模擬瀏覽器操做的過程
。
瀏覽器的主要功能是向服務器發出請求,在瀏覽器窗口中展現您選擇的網絡資源,HTTP是一套計算機經過網絡進行通訊的規則
當用戶在瀏覽器的地址欄中輸入一個URL地址並按回車鍵以後,瀏覽器會向HTTP服務器發送HTTP請求。 HTTP請求主要分爲 Get
和 Post
兩種方法。
當咱們在瀏覽器輸入URL http://www.baidu.com 的時候,瀏覽器發送一個Request請求去獲取 http://www.baidu.com 的html文件,服務器把Response文件對象發送回給瀏覽器。
瀏覽器分析Response中的 HTML,發現其中引用了不少其餘文件,好比Images文件,CSS文件,JS文件。 瀏覽器會自動再次發送Request去獲取圖片,CSS文件,或者JS文件等。
當全部的文件都下載成功後,網頁會根據HTML語法結構,完整的顯示出來了。
URL
(Uniform / Universal Resource Locator的縮寫):統一資源定位符,是用於完整地描述Internet上
Get
和Post
兩類:GET是從服務器上獲取指定頁面信息,POST是向服務器提交數據並獲取頁面信息。
GET請求參數都顯示在URL上,服務器根據該請求所包含URL中的參數來產生響應內容。 "Get" 請求的參數 是URL的一部分。
POST請求參數在請求體當中,消息長度沒有限制並且以隱式的方式進行發送,一般用來向HTTP服務器提交量比較大的數據(好比請求中包含許多參數或者文件上傳操做等)。 "POST"請求的參數 不在URL中,而在請求體中。
get請求的參數都在網址裏面包含,因此咱們有時候看到一個網址特別長,後邊帶了一坨東西。post請求通常是用於表單提交,將帳號密碼以post的方式發送。
當你任意點開客戶端與服務期的一次信息交互,你會看到它訪問客戶端攜帶的參數也就是頭部信息:request headers (經常使用) 以及客戶端的迴應response headers
前邊說過了,咱們鼠標每點擊一次,就是對服務器發送了一次請求,等待服務器給你響應
當咱們打開一個網頁,右鍵點擊選擇查看源代碼是能夠查看源代碼的,點擊審查元素 和檢查元素,就能夠對客戶端與服務器之間的信息交流進行查看如圖:
第一個箭頭指向的位置 —點擊一下,而後點擊文章相應位置,它會指向代碼中內容的位置,能夠幫助咱們查看數據在網頁中的結構和位置
第二給箭頭是網絡 — 點擊network ,從新刷新頁面,你會看到客戶端和服務器之間的數據來往,也是咱們從此用的最多的
第三個箭頭 是 —all是全部的數據來往,xhr通常ajax加載的數據會在這裏面找到,js是js的一些請求,裏面也有咱們要的數據,少數
下邊方框裏面 分別是 name status(狀態碼) type size 等 瞭解一下便可,狀態 200是正常,其餘異常狀態碼能夠百度,size點擊能夠按大小排列 這個後邊仍是挺方便的
問:爲何我抓到的和瀏覽器看到的不同?
答:網頁經過瀏覽器的解析,加載CSS與JS等文件對網頁進行解析渲染,達到咱們看到絢麗的網頁,而咱們抓到的文件只是一些代碼,css文件沒法調用,使得樣式不能表現出來,那麼網頁就會出現錯位等等問題。
問:怎樣解決JavaScript渲染的問題?
答:分析Ajax請求、Selenium/WebDriver、Splash、PyV八、Ghost.py等庫
如圖片、視頻、音頻等等直接保存成特定格式便可。