request的get方法
r=request.get(url)構造一個向服務器請求資源的Request對象,css
返回一個包含服務器資源的Response對象。html
Request對象由Request庫自動生成的。
Response對象包含從服務器返回的全部相關資源
同時包含咱們向服務器請求得到頁面的request信息
request.get(url,params=None,**kwargs)
url:擬獲取頁面的url連接
params:url中的額外參數,字典或字節格式,可選
**kwargs:12個控制訪問的參數
get方法源代碼用request方法進行封裝
request庫提供了七個經常使用方法,除了第一個request方法是基礎方法外
其餘方法都是經過調用request方法來實現的
也能夠這樣認爲:request庫只由一個方法就是request方法
爲了編寫程序方便,提供了其餘6個方法來調用request方法
request庫的2個重要對象
r=requests.get(url)
使用request對象,返回response對象
response對象包含爬蟲返回的所有內容
網絡上的資源,他有他的編碼
若是沒有編碼,咱們將沒辦法用有效的解析方式使得人類可讀這樣的內容
r.encoding的編碼方式是從Http header中charset字段得到的
若是Http header中有這樣一個字段,說明咱們訪問的服務器對它資源的編碼是有要求的
而這樣的編碼會得到回來存在r.encoding中
但不是全部的服務器對他的相關資源編碼都是有這樣的要求
若是header中不存在charset字段,則認爲編碼爲ISO-8859-1
可是這樣的編碼並不能解析中文
因此Request庫提供一個備選編碼叫apparent_encoding
apparent_encoding作的事情是根據Http的內容部分(而不是頭部分)
分析內容中出現文本的可能的編碼形式
原則上來講,apparent_encoding比encoding更爲準確
由於encoding並無分析內容,他只是從header的相關字段中提取編碼數
而apparent_encoding在分析內容且找到其中可能的編碼服務器
運用實例:網絡
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32 Type "copyright", "credits" or "license()" for more information. >>> import requests >>> r = requests.get("http://www.baidu.com") >>> print(r.status_code) #在這裏,若是返回的是200表示訪問成功。若是不是200則出現了錯誤 200 >>> type(r) <class 'requests.models.Response'> >>> r.headers {'Server': 'bfe/1.0.8.18', 'Date': 'Thu, 03 May 2018 23:52:26 GMT', 'Content-Type': 'text/html', 'Last-Modified': 'Mon, 23 Jan 2017 13:27:32 GMT', 'Transfer-Encoding': 'chunked', 'Connection': 'Keep-Alive', 'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Pragma': 'no-cache', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Content-Encoding': 'gzip'} >>> r.text '<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>ç\x99¾åº¦ä後面無論是啥了,反正出現了亂碼' #因爲出現亂碼,查看一下編碼 >>> r.encoding 'ISO-8859-1' >>> r.apparent_encoding 'utf-8' #改一下r.encoding編碼 >>> r.encoding='utf-8' >>> r.text '<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head>'亂碼已修改好 >>>