课件0902-requests库的使用_第1页
课件0902-requests库的使用_第2页
课件0902-requests库的使用_第3页
课件0902-requests库的使用_第4页
课件0902-requests库的使用_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

requests库的使用——网络爬虫库的应用制作:教材编写团队出版社:机械工业出版社《Python编程基础与应用》配套课件本课件为《Python编程基础与应用(第2版)》配套教学资源,由编写团队精心打造。为便于教学使用,团队同步提供了丰富的辅助材料,涵盖微课视频、教学课件、实训手册、习题答案、课程标准及程序源代码等。同时,教材配套超星教学示范包,支持一键克隆为网络在线课程,助力高效开展线上线下混合式教学。欢迎联系出版方订购使用。

书名:《Python编程基础与应用(第2版)》出版社:机械工业出版社主编:蓝永健、陈冬冬副主编:蔡德琛、朱海鑫、邓爱玲+contents目录requests的安装和简介requests的使用和示范爬虫与职业道德requests的安装和简介01requests的简介requests库是一个常用的用于http请求的模块,它使用python语言编写,可以方便地对网页进行爬取,是学习python爬虫的较好的http请求模块。requests库支持非常丰富的链接访问功能,包括域名和URL的获取、HTTP长连接和连接缓存、HTTP会话和cookie保持、浏览器的SSL验证、基本的制作摘要认证、有效的键值对cookie记录、自动解压缩、自动内容解码、文件分块上传、HTTP和HTTPS代理功能、连接超时处理、流数据下载等。Requests支持Python2.6—2.7以及3.3—3.7,而且能在PyPy下运行。requests的简介Requests是一个优雅而简单的PythonHTTP库。它允许你轻松地发送HTTP/1.1请求,无需手动添加查询字符串到URL,或者表单编码POST数据。Requests的主要特点:保持连接和连接池国际化域名和URL带持久Cookie的会话浏览器式的SSL认证自动内容解码基本/摘要式的身份认证优雅的键/值Cookie自动解压Unicode响应体多部分文件上传连接超时支持.netrc线程安全requests的安装有关它的更多介绍请访问英文网站https://2./en/latest/或者中文网站https://2./zh_CN/latest/index.html。它的安装方法很简单,可以直接使用PIP进行安装:#从国外镜像安装pipinstallrequests#从国内清华镜像源安装pipinstallrequests-i/pypi/web/simplerequests的基本方法(详细介绍)方法描述示例requests.get()发送

GET

请求,用于获取数据requests.get('/data',params={'key':'value'})requests.post()发送

POST

请求,用于提交数据requests.post('/submit',data={'key':'value'})requests.put()发送

PUT

请求,用于更新资源requests.put('/update',json={'id':1,'data':'new'})requests.delete()发送

DELETE

请求,用于删除资源requests.delete('/delete/1')requests.head()发送

HEAD

请求,只获取响应头(无响应体)requests.head('')requests.patch()发送

PATCH

请求,用于部分更新资源requests.patch('/patch',data={'key':'new'})requests.options()发送

OPTIONS

请求,用于获取服务器支持的HTTP方法requests.options('')response对象的常用参数(适用于所有方法)参数说明示例params字典类型,用于GET请求的URL参数params={'page':1,'limit':10}data字典或字符串,用于POST/PUT请求的表单数据data={'username':'admin','pwd':'123'}json字典类型,自动编码为JSON并设置Content-Type:application/jsonjson={'name':'Alice','age':25}headers字典类型,自定义请求头headers={'User-Agent':'Mozilla/5.0'}cookies字典类型,发送Cookiecookies={'session_id':'abc123'}timeout设置请求超时时间(秒)timeout=5allow_redirects布尔值,是否允许重定向(默认True)allow_redirects=Falseauth元组类型,用于HTTP基本认证auth=('user','pass')proxies字典类型,设置代理服务器proxies={'http':'0:3128'}response对象的一些属性(简单版)属性说明r.status_codehttp请求的返回状态,若为200则表示请求成功。r.texthttp响应内容的字符串形式,即返回的页面内容r.encoding从httpheader中猜测的相应内容编码方式r.apparent_encoding从内容中分析出的响应内容编码方式(备选编码方式)r.contenthttp响应内容的二进制形式response对象的一些属性(详细版)属性/方法说明示例response.status_codeHTTP状态码(如200、404)ifresponse.status_code==200:response.text返回响应内容(字符串形式)print(response.text)response.content返回响应内容(字节形式,适合非文本数据如图片)withopen('image.jpg','wb')asf:f.write(response.content)response.json()解析JSON响应为Python字典(需响应是JSON格式)data=response.json()response.headers返回响应头(字典形式)print(response.headers['Content-Type'])response.cookies获取服务器返回的Cookiesprint(response.cookies.get('session'))response.url获取最终请求的URL(含重定向)print(response.url)response.raise_for_status()如果状态码不是200,抛出异常response.raise_for_status()基本使用示例——发送GET请求importrequests#发送GET请求response=requests.get('')#查看响应状态码print(response.status_code)#200#查看响应内容print(response.text)#返回网页HTML内容基本使用示例——带参数的GET请求importrequests#定义查询参数params={'key1':'value1','key2':'value2'}#发送带参数的GET请求response=requests.get('/get',params=params)#查看最终请求的URLprint(response.url)#/get?key1=value1&key2=value2#查看JSON响应print(response.json())基本使用示例——发送POST请求importrequests#定义POST数据data={'username':'testuser','password':'testpass'}#发送POST请求response=requests.post('/post',data=data)#查看响应内容print(response.json())基本使用示例——发送JSON数据importrequestsimportjson#定义JSON数据data={'name':'JohnDoe','age':30,'city':'NewYork'}#发送JSON数据response=requests.post('/post',json=data)#查看响应print(response.json())基本使用示例——设置请求头importrequestsheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)','Accept-Language':'en-US,en;q=0.9'}response=requests.get('',headers=headers)print(response.status_code)基本使用示例——处理Cookiesimportrequests#发送请求并获取Cookiesresponse=requests.get('')print(response.cookies)#发送带Cookies的请求cookies={'key':'value'}response=requests.get('/cookies',cookies=cookies)print(response.text)基本使用示例——处理超时importrequeststry:

#设置超时时间为3秒

response=requests.get('',timeout=3)print(response.status_code)exceptrequests.exceptions.Timeout:print("请求超时")基本使用示例——下载文件importrequestsurl='/sample.pdf'response=requests.get(url,stream=True)withopen('sample.pdf','wb')asf:forchunkinresponse.iter_content(chunk_size=1024):ifchunk:f.write(chunk)基本使用示例——使用会话(Session)importrequests#创建会话对象session=requests.Session()#设置公共请求头session.headers.update({'User-Agent':'MyCustomUserAgent/1.0'})#使用会话发送请求response1=session.get('/page1')response2=session.get('/page2')#会话会自动保持Cookies等信息基本使用示例——处理重定向importrequests#允许重定向(默认)response=requests.get('',allow_redirects=True)print(response.url)#会重定向到#禁止重定向response=requests.get('',allow_redirects=False)print(response.status_code)#301注意事项异常处理:在实际使用中应该添加异常处理遵守robots.txt:爬虫应遵守目标网站的robots.txt规则设置合理的请求间隔:避免对目标网站造成过大压力用户代理:设置合理的User-Agent合法性:确保你的爬虫行为符合法律法规和网站的使用条款requests的使用和示范02范例11-4requests的基本方法以下范例中使用简单的几行代码就可以实现抓取百度首页的信息。importrequestsresponse=requests.get("/")print('response类型:',type(response))#获取<class'requests.models.Response'>response类型print('获取状态码:',response.status_code)#200获取状态码print('网页cookies:',response.cookies)#获取网页cookies,RequestsCookieJarprint('请求头:',response.headers)#获取请求头#print(response.text)#获取网页源码#print(response.content)#获取网页源码范例11-4requests的基本方法其中response.text和response.content可以获取网页源码,读者可以自己尝试一下它的结果如下范例11-5使用requests下载一个网页到本地应用requests库可以快速地所一个URL网页的源码信息下载下来,并保存到本地。以下范例把百度新闻首页抓取下来并保存到文本文件newshtml.txt中。importrequests#使用requests的get()获取网页HTML代码,并编码r=requests.get('/')r.encoding='utf-8'#对中文进行utf-8编码,避免出现乱码#写入本地文件f=open(‘newshtml.txt’,mode=‘w’)#保存文件,使用参数wf.writelines(r.text)#写入多行f.close()#关闭文件print('网页抓取结束,并写入文件newshtml.txt成功')范例11-5使用requests下载一个网页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论