一直想學Spyder,苦於沒有方向。經高人指點,總算開始了爬蟲的學習。本文權當一個總結,若有不當請多指正,歡迎拍磚。
首先,寫初級的爬蟲程序離不開“Requests”庫,import後正式開始。
一、Reuqests庫的常用函數:
import Requests
requests.request() 構造一個請求,支撐一下各方法的基礎方法
requests.get() 獲取HTML頁面的主要方法,對應HTTP的GET
requests.head() 獲取HTML網頁頭信息的方法,對應於HTTP的HEAD
requests.post() 向HTML提交POST請求, 。。。。。POST
requests.put() 。。。。。PUT。。 , 。。。。。PUT
requests.patch() 向HTML網頁提交局部修改請求,對應PATCH
requests.delete() 。。。。。。。刪除。。。。。,。。DELETE
二、Response對象
調用了上述方法後,均能讓服務器響應,並返回一個Response對象。其主要屬性值如下:
r. status_ code HTTP請求的返回狀態, 200表示連接成功, 404表示失敗
r.text HTTP響應內容的字符串形式,即, ur1對應的頁面內容
r . encoding 從HTTP header中猜測的響應內容編碼方式
r . apparent_ encoding 從內容中分析出的響應內容編碼方式(備選編碼方式)
r. content HTTP響應內容的二進制形式
三、請求方式及其參數設置
(1)請求方式
import Requests
requests.get(url,params,**kwargs)
#url:爬取網頁的鏈接
#params:url中的額外參數,用來生成鏈接
#**kwargs:訪問控制參數,一共12個
這個代碼就是爬蟲獲取網頁的基本格式。
(2)params
關於params,舉一個例子來說明:
能看到變化的是?wd的值,而這個值可以通過params傳給url來進行處理。
借用"http://httpbin.org" 能夠檢查URL的各個參數,下面我們借用這個網站來觀察params的設置
import requests
res=requests.get("http://httpbin.org/get?name=python&age=20") #給出參數 ?name=python&age=20
print(res.status_code)
print(res.encoding)
print(res.apparent_encoding)
res.encoding=res.apparent_encoding
print(res.text)
能看到參數被直接傳進去了,下面我們用header參數來保存所有參數的值,再賦給params,看看會不會得到相同的結果
import requests
headers={'name':'python',
'age' :20
}
res=requests.get("http://httpbin.org/get",headers) #headers填到params的地方
print(res.status_code)
print(res.encoding)
print(res.apparent_encoding)
res.encoding=res.apparent_encoding
print(res.text)
運行結果如下:
能看到,是一樣的。
(3)關於**kwargs
有時候有些網站並不允許python的爬蟲對其網頁進行瀏覽,只允許一些瀏覽器進入。此時如果只是按照一般的方法則無法爬取數據,而如果我們能將自己的spider進行僞裝,就可以進入了。這就是**kwargs的作用
下面我們將自己的爬蟲裝做火狐瀏覽器來進入百度的網頁。:
import requests
header={'user-agent':'Mozilla/5.0'}
res=requests.get("https://www.baidu.com/explore",headers=header) #headers填到被賦值爲header
print(res.status_code) #打印連接狀態碼,200連通,404未連通
res=requests.get("http://httpbin.org/get",headers=header)
res.encoding=res.apparent_encoding
print(res.text)
要注意的是,kwargs必須和原來的參數值完全相同纔可以改變參數(血的教訓,試了很久都沒試出來,最後才發現headers少打了個s)
上述就是Spider入門需要掌握的基本知識之一,後續會陸續寫完。歡迎拍磚。