简介:requests是一个优雅而简单的Python 第三方HTTP请求库,专为人类而构建。 requests的官方文档同样也非常的完善详尽,而且少见的有中文官方文档:http://cn./zh_CN/latest/。 英文文档:http://docs./en/master/api/ 安装:
一、请求(requests)每一个请求方法都有一个对应的API。比如GET请求就使用get()方法, 而POST请求就使用post()方法,并且将需要提交的数据传递给data参数即可请求方法
import requests
url = "http:///post"
resp = requests.put(url="http:///put", data=None) # 修改
二、响应(response)
三、参数
proxies # http代理, 是一个字典 [字典映射协议到代理的URL] proxies = {
verify # 请求时是否验证SSL证书;默认验证的,关闭verify=False即可 import urllib3
stream # stream=False 响应内容将立即下载 # stream=True将以流的形式下载 resp = requests('http:///bytes/102400', stream=True)
files (文件上传) files = {}
allow_redirects=False # 关闭重定向 resp = requests.get('http://github.com', allow_redirects=False)
auth (身份认证)# 如果访问的网站,需要我们验证用户身份信息(如 用户名 密码) from request.auth import HTTPBasicAuth url = 'http://need authentication of url' resp = requests.get(url, auth=('username', 'password')) # 其实上面的auth参数是HTTPBasicAuth的实例,它会默认使用HTTPBasicAuth这个类来验证: requests.get(url, auth=HTTPBasicAuth('username', 'password')) timeout (设置超时)APIrequests底层api接口 ==> request : def request(self, method, url, params=None, data=None, headers=None, cookies=None, files=None, auth=None, timeout=None, allow_redirects=True, proxies=None, hooks=None, stream=None, verify=None, cert=None, json=None): pass 四、session 会话对象session能够自动的整合每次请求返回的set-cookie, 并且在后续的请求中自动携带. 就是说你使用session对象来发送请求, 那么返回的set-cookie会自动保存和整合 并自动在后续请求中携带上. 就不用手动给后续请求设置cookies.
【常用于模拟登录】 import requests url = 'http:///get' # 该测试网址返回的都是json数据 session = requests.Session() resp = session.get(url, headers=headers) print(resp.text) print(resp.json()) # 设置整个headers session.headers = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" } # 如果需要添加或者更新headers referer = {'Referer': 'http://www.baidu.com'} session.headers.update(referer) 模拟豆瓣登录import requests from Spiders_class.demo_03 import my_info as mb headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36", "Referer": "https://accounts.douban.com/passport/login" } login_url = 'https://accounts.douban.com/j/mobile/login/basic' # 登录请求的url login_data={ "ck": "", "name": mb.user, "password": mb.pwd, "remember": "false", "ticket": "", } personal_url = 'https://www.douban.com/people/197134290/' # 用户个人中心 # session能够自动的整合每次请求返回的set-cookie, 并且在后续的请求中自动携带. session = requests.Session() session.headers = headers # 在会话时就携带头部信息(整个headers) resp = session.post(login_url, data=login_data) response = session.get(personal_url) response = 'utf-8' print(response.text) 开发流程:1.找到目标数据(如需要请求的目标url)2.分析请求流程(从目标页面分析、匹配到所有页面的url)3.发起http请求(对所有的url发起请求;多线程)4.提取清洗数据(re、xpath等以及其他模块的方法)5.数据持久化(构造结构化数据、保存到文件或数据库) |
|