天天看點

Requests爬取網頁内容

Requests的簡單用法

Requests主要方法:

  • requests.request() #構造一個請求,支撐以下各方法的基礎方法
  • requests.get() #get方法擷取網頁
  • requests.head() #擷取網頁頭資訊的方法,對應HTTP的HEAD
  • requests.post() #post方法擷取網頁資訊
  • requests.put() # put方法擷取網頁資訊(一般用不到)
  • requests.patch() # patch方法請求網頁資訊(一般用不到)
  • requests.delete() #向HTML網頁送出删除請求

Requests.get的用法:

import requests	# 導入方法
r = requests.get(url)		#發送請求獲得相應
           

Response對象的屬性:

  • r.status_code # 傳回的狀态碼,不同狀态碼代表不同意思,200表示傳回正常。
  • r.text #傳回對象的文本内容
  • r.content #猜測傳回對象的二進制形式
  • r.encoding #分析傳回對象的編碼方式
  • r.apparent_encoding #相應内容編碼方式(備選編碼方式)
  • r.raise_for_status() #抛出異常

爬取豆瓣網頁資訊

分析豆瓣短評網頁是動态加載還是靜态加載

  1. 在谷歌浏覽器中進制js
  2. 如果是靜态加載則使用正常URL請求,如果是動态加載則分析真是請求。

使用Requests下載下傳資料

  1. 導入Requests庫
  2. 輸入URL
  3. 使用GET方法
  4. 列印傳回檔案
  5. 抛出異常

爬取網頁的通用架構

  1. 定義函數
  2. 設定逾時
  3. 異常處理
  4. 調用函數

代碼:

import requests

def getHTML(url):
    try:
        r = requests.get(url)
        r.raise_for_status()    #抛出異常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "請求發生錯誤錯誤"

if __name__ == '__main__':
    url = 'https://movie.douban.com/subject/1907464/'
    print(getHTML(url))
           

爬蟲協定(robots)

什麼是爬蟲協定:

爬蟲協定又稱為robots協定,用來表明那些網站中那些内容可以抓去那些内容不可以抓去。

爬蟲協定檔案規範:

  1. 必須以robots.txt命名的文本檔案儲存;
  2. 必須儲存在網站的頂級目錄下;

爬蟲協定參數說明:

攔截所有爬蟲:

User-agent:*

Disallow:/

允許所有爬蟲:

User-agent:*

Disallow:

Allow:是允許爬取的内容

Disallow:是不允許爬取的内容

Crawl-delay:10:規定爬蟲延遲時間為10秒

檢視爬蟲協定:

直接在URL欄中,在頂級域名後輸入robots.txt即可檢視

例:www.baidu.com/robots.txt

繼續閱讀