Python3網絡爬蟲——1、什麼是爬蟲

1、什麼是爬蟲  

  首先簡單的理解一下爬蟲。即請求網站而且提取本身所需的數據的一個過程。至於怎麼爬,將是後面進行學習的內容,暫且沒必要深究。經過咱們的程序,能夠代替咱們向服務器發送請求,而後進行批量、大量的數據的下載。css

 

2、爬蟲的基本流程

  1. 發起請求:經過url向服務器發起request請求,請求能夠包含額外的header信息。
  2. 獲取響應內容:若是服務器正常響應,那咱們將會收到一個response,response即爲咱們所請求的網頁內容,或許包含HTML,Json字符串或者二進制的數據(視頻、圖片)等。
  3. 解析內容:若是是HTML代碼,則可使用網頁解析器進行解析,若是是Json數據,則能夠轉換成Json對象進行解析,若是是二進制的數據,則能夠保存到文件進行進一步處理。
  4. 保存數據:能夠保存到本地文件,也能夠保存到數據庫(MySQL,Redis,Mongodb等)  

  

  3、request請求包含什麼

    當咱們經過瀏覽器向服務器發送request請求時,這個request包含了一些什麼信息呢?咱們能夠經過chrome的開發者工具進行說明(若是不知道如何使用看本篇備註)。html

  1. 請求方式:最經常使用的請求方式包括get請求和post請求。post請求在開發中最多見的是經過表單進行提交,從用戶角度來說,最多見的就是登陸驗證。當你須要輸入一些信息進行登陸的時候,此次請求即爲post請求。
  2. url統一資源定位符:一個網址,一張圖片,一個視頻等均可以用url去定義。當咱們請求一個網頁時,咱們能夠查看network標籤,第一個一般是一個document,也就是說這個document是一個未加外部圖片、css、js等渲染的html代碼,在這個document的下面咱們會看到一系列的jpg,js等,這是瀏覽器根據html代碼發起的一次又一次的請求,而請求的地址,即爲html文檔中圖片、js等的url地址
  3. request headers:請求頭,包括此次請求的請求類型,cookie信息以及瀏覽器類型等。 這個請求頭在咱們進行網頁抓取的時候仍是有些做用的,服務器會經過解析請求頭來進行信息的審覈,判斷此次請求是一次合法的請求。因此當咱們經過程序假裝瀏覽器進行請求的時候,就能夠設置一下請求頭的信息。
  4. 請求體:post請求會把用戶信息包裝在form-data裏面進行提交,所以相比於get請求,post請求的Headers標籤的內容會多出Form Data這個信息包。get請求能夠簡單的理解爲普通的搜索回車,信息將會以?間隔添加在url的後面。

  

 4、response包含什麼

  1. 響應狀態:經過Headers中的General能夠看到status code。200表示成功,301跳轉,404找不到網頁,502服務器錯誤等。
  2. 響應頭:包括了內容的類型,cookie信息等。
  3. 響應體:請求的目的就是爲了獲得響應體,包括html代碼,Json以及二進制數據等。

 

  5、簡單的請求演示

    經過Python的request庫進行網頁請求:web

    

    輸出的結果就是還未渲染的網頁代碼,即請求體的內容。能夠查看響應頭的信息:chrome

    

    查看狀態碼:數據庫

    

    還能夠將請求頭添加到請求信息裏面:瀏覽器

    

    抓取圖片(百度logo):服務器

    

 

 6、如何解決JavaScript渲染問題 

    使用Selenium webdrivercookie

    

    輸入print(driver.page_source)能夠看到,此次的代碼是渲染以後的代碼。工具

    

 

【備註】chrome瀏覽器的使用

  • F12打開開發者工具

  

 

  Elements標籤顯示了顯而後的HTML代碼。post

  • Network標籤

  

 

  Network標籤下有瀏覽器請求的數據,點開能夠查看詳細的信息,如上提到的request headers、response headers等等。

   

 

 

YouTube學習視頻(Elnino Chen老師):https://www.youtube.com/channel/UC0gXu_5GOwzAaxkFymbwRhg 

相關文章
相關標籤/搜索