爬蟲基礎入門(二)

  • 1 爬蟲之Cookie的使用
  1. 1 Opener
  2. 2 Cookielib
    cookielib模塊的主要做用是提供可存儲cookie的對象,以便於與urllib2模塊配合使用來訪問Internet資源。Cookielib模塊很是強大,咱們能夠利用本模塊的CookieJar類的對象來捕獲cookie並在後續鏈接請求時從新發送,好比能夠實現模擬登陸功能。該模塊主要的對象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。
    它們的關係:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar
    1)獲取Cookie保存到變量
    2)保存Cookie到文件
    3)從文件中獲取Cookie並訪問
    4)利用cookie模擬網站登陸
    以學校的教育系統爲例,利用cookie實現模擬登陸,並將cookie信息保存到文本文件中
    建立一個帶有cookie的opener,在訪問登陸的URL時,將登陸後的cookie保存下來,而後利用這個cookie來訪問其餘網址。
    1.3設置Headers
    agent就是請求的身份,若是沒有寫入請求身份,那麼服務器不必定會響應,因此能夠在headers中設置agent,
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'  
values = {'username' : 'cqc',  'password' : 'XXXX' }  
headers = { 'User-Agent' : user_agent }

這樣,咱們設置了一個headers,在構建request時傳入,在請求時,就加入了headers傳送,服務器若識別了是瀏覽器發來的請求,就會獲得響應。另外,咱們還有對付」反盜鏈」的方式,對付防盜鏈,服務器會識別headers中的referer是否是它本身,若是不是,有的服務器不會響應,因此咱們 還能夠在headers中加入本身的referer,以下所示:正則表達式

headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'  ,
                        'Referer':'http://www.zhihu.com/articles' }

同上面的方法,在傳送請求時把headers傳入Request參數裏,這樣就能應付防盜鏈了。
另外headers的一些屬性,下面的須要特別注意一下:json

User-Agent : 有些服務器或 Proxy 會經過該值來判斷是不是瀏覽器發出的請求
Content-Type : 在使用 REST 接口時,服務器會檢查該值,用來肯定 HTTP Body 中的內容該怎樣解析。
application/xml : 在 XML RPC,如 RESTful/SOAP 調用時使用
application/json : 在 JSON RPC 調用時使用
application/x-www-form-urlencoded : 瀏覽器提交 Web 表單時使用
在使用服務器提供的 RESTful 或 SOAP 服務時, Content-Type 設置錯誤會致使服務器拒絕服務
  • 2 爬蟲正則表達式
    正則表達式是對字符串操做的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個「規則字符串」,這個「規則字符串」用來表達對字符串的一種過濾邏輯。
    正則表達式的大體匹配過程是:
    1.依次拿出表達式和文本中的字符比較,
    2.若是每個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。
    3.若是表達式中有量詞或邊界,這個過程會稍微有一些不一樣。
    下面是Python中正則表達式的一些匹配規則,圖片資料來自CSDN
相關文章
相關標籤/搜索