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: /
'''