'重點!python爬蟲教程:爬蟲的基本流程'

"
"
重點!python爬蟲教程:爬蟲的基本流程


爬蟲的基本流程

1.發起請求:

通過HTTP庫向目標站點發起請求,即發送一個Request,請求可以包含額外的headers等信息,然後等待服務器響應。這個請求的過程就像我們打開瀏覽器,在瀏覽器地址欄輸入網址:www.baidu.com,然後點擊回車。這個過程其實就相當於瀏覽器作為一個瀏覽的客戶端,向服務器端發送了 一次請求。

2.獲取響應內容:

如果服務器能正常響應,我們會得到一個Response,Response的內容便是所要獲取的內容,類型可能有HTML、Json字符串,二進制數據(圖片,視頻等)等類型。這個過程就是服務器接收客戶端的請求,進過解析發送給瀏覽器的網頁HTML文件。

3.解析內容:

得到的內容可能是HTML,可以使用正則表達式,網頁解析庫進行解析。也可能是Json,可以直接轉為Json對象解析。可能是二進制數據,可以做保存或者進一步處理。這一步相當於瀏覽器把服務器端的文件獲取到本地,再進行解釋並且展現出來。

4.保存數據:

保存的方式可以是把數據存為文本,也可以把數據保存到數據庫,或者保存為特定的jpg,mp4 等格式的文件。這就相當於我們在瀏覽網頁時,下載了網頁上的圖片或者視頻。

Request

1.什麼是Request?

瀏覽器發送信息給該網址所在的服務器,這個過程就叫做HTTP Request。

2.Request中包含什麼?

  • 請求方式:請求方式的主要類型是GET,POST兩種,另外還有HEAD、PUT、DELETE等。GET 請求的請求參數會顯示在URL鏈接的後面,比如我們打開百度,搜索“圖片”,我們會看到請求的URL鏈接為https://www.baidu.com/s?wd=圖片。而 POST 請求的請求參數會存放在Request內,並不會出現在 URL 鏈接的後面,比如我們登錄知乎,輸入用戶名和密碼,我們會看到瀏覽器開發者工具的Network頁,Request請求有Form Data的鍵值對信息,那裡就存放了我們的登錄信息,有利於保護我們的賬戶信息安全;
  • 請求 URL:URL 全稱是統一資源定位符,也就是我們說的網址。比如一張圖片,一個音樂文件,一個網頁文檔等都可以用唯一URL來確定,它包含的信息指出文件的位置以及瀏覽器應該怎麼去處理它;
  • 請求頭(Request Headers):請求頭包含請求時的頭部信息,如User-Agent(指定瀏覽器的請求頭),Host,Cookies等信息;
  • 請求體:請求體是請求額外攜帶的數據,比如登錄表單提交的登錄信息數據。

Response

1.什麼是Response?

服務器收到瀏覽器發送的信息後,能夠根據瀏覽器發送信息的內容,做出相應的處理,然後把消息回傳給瀏覽器,這個過程就叫做HTTP Response。

2.Response中包含什麼?

  • 響應狀態:有多種響應狀態,比如200代表成功,301 跳轉頁面,404 表示找不到頁面,502 表示服務器錯誤;
  • 響應頭(Response Headers):比如內容類型,內容長度,服務器信息,設置Cookie等;
  • 響應體:響應體最主要的部分,包含了請求資源的內容,比如網頁 HTML 代碼,圖片二進制數據等。

簡單演示

import requests # 導入requests庫,需要安裝
# 模擬成瀏覽器訪問的頭
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
resp = requests.get('https://www.baidu.com',headers=headers)
print(resp.text) # 打印出網頁源代碼
print(resp.status_code) # 打印出狀態碼

運行成功後可以看到打印出來的 html 源代碼和 200 狀態碼了。這就基本上實現了爬蟲的Request和Response的過程。

能抓到什麼樣的數據?

  • 網頁文本:如 HTML 文檔,Ajax加載的Json格式文本等;
  • 圖片,視頻等:獲取到的是二進制文件,保存為圖片或視頻格式;
  • 其他只要能請求到的,都能獲取。

演示

import requests
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
resp = requests.get('http://www.baidu.com/img/baidu_jgylogo3.gif',headers=headers)
print(resp.content) # 二進制文件使用content
# 保存圖片
with open('logo.gif','wb') as f:
f.write(resp.content)
print('Ok')

成功運行就可以看到打印出來的圖片的二進制數據,可保存成功後打印的 OK,這個時候我們打開文件夾就可以看到下載下來的圖片了。這幾行代碼就簡單的演示了爬蟲保存文件的過程。

解析方式有哪些?

  • 直接處理,比如簡單的頁面文檔,只要去除一些空格的數據;
  • Json解析,處理Ajax加載的頁面;
  • 正則表達式;
  • BeautifulSoup庫;
  • PyQuery;
  • XPath。

看到這裡,大家是不是已經對爬蟲的基本工作原理有了清晰的認識了呢。當然,羅馬並不是一天建成的,只要積累了足夠多的經驗,大家肯定能成為爬蟲大神的。

如果還有不會的朋友 可以私信“Java資料”, 我這裡有Java各種資料 以及大數據 人工智能的資料 免費發給大家 謝謝啦

"

相關推薦

推薦中...