requests.request() 构造一个请求,支撑以下各方法的基础方法
requests.request(method, url ,**kwargs)
**kwargs:控制访问的参数,
(1) params: 字典或者字节序列,作为参数增加到url中;
kv = {'key1':'value1', 'key2':'value2'}
r = requests.request('get', 'http://www.baidu.com', params = kv)
print(r.url)
---http://www.baidu.com/?key1=value1&key2=value2
(2)data :字典、字节序列或者文件对象,作为request的内容
kv = {'key1':'value1', 'key2':'value2'}
r = requests.request('POST', 'http://python123.io/ws', data = kv)
body = '主题内容'
r = requests.request('POST', 'http://python123.io/ws', data = body)
(3) json: json 格式的数据,作为Request的内容。
kv = {'key1':'value1', 'key2':'value2'}
r = requests.request('POST', 'http://python123.io/ws', json = kv)
(4) headers 字典,http定制头,如模拟浏览器
hd = {'user-agent':'Chrome/10'}
r = requests.request('POST', 'http://python123.io/ws', headers = hd)
(5) cookies: 字典或者CookieJar, request中的cookie;
(6) auth: 元组,支持HTTP认证功能
(7) files: 字典类型,传输文件
fs = {'file': open('data.xls', 'rb')}
r = requests.request('POST', 'http://python123.io/ws', files = fs)
(8) timeout: 设定超时时间
(9) proxies: 字典类型,设定访问代理服务器
(10) allow_redirects: True or False, 重定向开关
(11) stream: 获取内容立即下载开关,True or False
(12) verify : True or False 认证SSL证书开关
(13) cert: 本地SSL证书路径
requests.get() 获取HTML网页的主要方法
requests.head():获取HTML网页头的主要方法
requests.post(): 向网页提供POST请求,向URL位置的资源后附件新的数据
requests.put():向网页提供put请求,覆盖原URL位置的资源
requests.patch(): 向HTML网页提交局部修改请求,局部更新
requests.delete():提交删除请求
r.status_code: HTTP返回状态,200成功,404失败
r.text HTTP响应内容的字符串形式
r.encoding 从HTTP Header中猜测的响应内容的编码形式
r.apparent_encoding 从内容中分析出的响应内容的编码形式
r.content HTTP响应内容的二进制形式
爬取代码通用框架
import requests
def get_HTML_Text(url):
try:
# get url,超时30秒; request.head().headers
# 可以获取文件头,request.get().text也可以,但是,其产生网络流量不一样。
r = requests.get(url, timeout=30)
r.raise_for_status() # 如果状态不是200,引发HTTPERROR
r.encoding = r.apparent_encoding # 获取编码方式
return r.text
except BaseException:
return "产生异常"
if __name__ == '__main__':
url = 'http://www.baidu.com'
print(get_HTML_Text(url))