天天看點

requests 庫 & robots 協定

import requests


# ===通用代碼架構
def get_html_text(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()  # 如果狀态不是200,引發HTTP——error異常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "産生異常"


'''
response對象的屬性
屬性                            說明
r.status_code           HTTP請求的傳回狀态,200表示連接配接成功,404表示失敗 
r.text                  HTTP響應内容的字元串形式,即,url對應的頁面内容 
r.encoding              從HTTP header中猜測的響應内容編碼方式 
r.apparent_encoding     從内容中分析出的響應内容編碼方式(備選編碼方式) 
r.content               HTTP響應内容的二進制形式
'''

'''
requests庫的七個常用方法
方法                          說明 
requests.request()      構造一個請求,支撐以下各方法的基礎方法 requests.get()擷取HTML網頁的主要方法,對應于HTTP的GET 
requests.head()         擷取HTML網頁頭資訊的方法,對應于HTTP的HEAD 
requests.post()         向HTML網頁送出POST請求的方法,對應于HTTP的POST 
requests.put()          向HTML網頁送出PUT請求的方法,對應于HTTP的PUT 
requests.patch()        向HTML網頁送出局部修改請求,對應于HTTP的PATCH 
requests.delete()       向HTML頁面送出删除請求,對應于HTTP的DELETE
requests.get()          擷取HTML網頁的主要方法,對應于HTTP的GET 
'''

 # 測試一百次requests需要多長時間
 n = 0
 url = 'http://www.baidu.com'
while n < 100:
     get_html_text(url)
     print(get_html_text(url))
     n += 1

'''
====網絡爬蟲的尺寸
網頁  requests
網站  scrapy
全網  定制開發

====網絡爬蟲引發的問題
性能騷擾 
法律風險 
隐私洩露

====robots協定
Robots Exclusion Standard,網絡爬蟲排除标準
==作用:
網站告知網絡爬蟲哪些頁面可以抓取,哪些不行
==形式:
在網站根目錄下的robots.txt檔案
# *代表所有,/代表根目錄 
User‐agent: *  
Disallow: / 
'''