版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用urllib实现数据传输Contents素养目标培养良好的信息素养和道德意识技能目标熟悉使用urllib库爬取网页知识目标掌握urllib库中包含模块的定义什么是urllib库用于处理URL(UniformResourceLocator)相关的操作。urllib是Python标准库中的一个模块提供一系列函数和类方便在Python程序进行操作URL请求数据获取参数编码通过urllib库,开发人员可以实现:获取数据发送HTTP请求处理URL网站什么是urllib库模块功能urllib.requestHTTP请求模块,用于模拟浏览器发起网络请求。urllib.parse解析模块,用于解析URL。urllib.error异常处理模块,用于处理request引起的异常。urllib.robotparser用于解析robots.txt文件,应用较少。urllib包含4个模块:urllib库用于操作:urllib.request模块发送HTTP请求获取远程数据处理URLurllib库用于解析和操作URL,提供了一组函数:urllib.parse模块完整的URL各个组成部分拆分为合并为urllib库用于处理与urllib请求和打开URL相关的错误。urllib.error模块提供一些异常类捕获和处理urllib过程中可能出现的异常情况urllib库用于解析和分析robots.txt文件。urllib.robotparser哪些页面可以访问,哪些页面需要排除访问。指示网络爬虫urllib库提供了一个RobotFileParser类。urllib.robotparser用于解析robots.txt文件并提供方法来判断一个URL是否允许被爬取。快速使用urllib爬取网页#引入urllib.request库importurllib.request#调用urllib.request库的urlopen方法,并传入一个urlresponse=urllib.request.urlopen('')#使用read方法读取获取到的网页内容html=response.read().decode('UTF-8')#打印网页内容print(html)示例使用urllib快速爬取百度网页快速使用urllib爬取网页示例结果如果在浏览器上打开百度主页,右键选择“查看源代码”,会发现打印出来的是一样的。仅仅用了几行代码,就已经把百度的首页的全部代码下载下来。快速使用urllib爬取网页代码调用urllib.request模块中的urlopen方法,传入一个百度首页的URL,使用的HTTP协议。爬取网页有一句核心的爬虫代码:response=urllib.request.urlopen('')快速使用urllib爬取网页urlopen方法可以接收多个参数,定义格式如下:urllib.request.urlopen(url,
data=None,
[timeout,
]*,
cafile=None,
capath=None,
cadefault=False,
context=None)参数如下:表示目标资源在网站中的位置。url用来指明向服务器发送请求的额外信息。data该参数用于设置超时时间,单位是秒。timeout实现SSL加密传输,该参数很少使用。context快速使用urllib爬取网页HTTP参数详细介绍:dataHTTP协议是Python支持的众多网站通信协议中唯一使用data参数的。只有打开http网址才有作用data参数data必须是一个bytes对象。必须使用urllib.parse.urlencode()自定义的data标准格式转换为能接收的参数类型是Python中的mapping类型(键值对,比如dict)或者是只包含两个元素的元组类型。快速使用urllib爬取网页HTTP参数详细介绍:只有打开http网址才有作用data参数data必须是一个bytes对象。当用户设置data参数时,需要将发送请求的方式改为POST。默认为NoneData以GET方式发送请求dataHTTP协议是Python支持的众多网站通信协议中唯一使用data参数的。快速使用urllib爬取网页data参数的使用:importurllib.parsedata=bytes(urllib.parse.urlencode({'world':'hello'}).encode('utf-8'))response=urllib.request.urlopen('/post',data=data)html=response.read().decode('utf-8')print(html)需要被转码成bytes类型转字节流方法urllib.parse.urlencode()方法bytes()方法第二个参数指定编码格式。执行后,通过观察返回的响应头里的Content-Type字段的值可以知道使用的是POST请求方法。bytes()方法第一个参数是字符串类型将参数转换为字符串快速使用urllib爬取网页response=urllib.request.urlopen('/get',timeout=2)html=response.read().decode('utf-8')print(html)等待时间最多为2秒timeout参数的使用:快速使用urllib爬取网页使用urlopen方法发送HTTP请求后,服务器返回的响应内容封装在一个HTTPResponse类型的对象中。importurllib.requestresponse=urllib.request.urlopen('')print(type(response))例如<class'http.client.HTTPResponse'>快速使用urllib爬取网页方法:read()、readinto()、getheader(name)、getheaders()、fileno()属性:msg、version、status、reason、bebuglevel、closed使用urllib.request.urlopen()方法示例代码如下:importurllib.request
response=urllib.request.urlopen('https://www.P')#请求站点获得一个HTTPResponse对象print(response.read().decode('utf-8'))#返回网页内容print(response.getheader('server'))#返回响应头中的server值print(response.getheaders())#以列表元祖对的形式返回响应头信息print(response.version)#返回版本信息print(response.status)#返回状态码200,404代表网页未找到print(response.debuglevel)#返回调试等级print(response.closed)#返回对象是否关闭布尔值print(response.geturl())#返回检索的URLprint(())#返回网页的头信息print(response.getcode())#返回响应的HTTP状态码print(response.msg)#访问成功则返回okprint(response.reason)#返回状态信息urllib.request.urlopen()返回请求对象构造Request对象#将url作为Request方法的参数,构造并返回一个Request对象。request=urllib.request.Request('')#将Request对象作为urlopen方法的参数,发送给服务器并接收响应。response=urllib.request.urlopen(request)使用urllib库发送URL时,推荐使用构造Request对象的方式。如果希望对请求执行复杂操作,则需要创建一个Request对象来作为urlopen方法的参数。例如构造Request对象urllib.request.Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,method=None)请求的URL,必须传递的参数,其他都是可选参数。url上传的数据,必须传bytes字节流类型的数据,如果它是字典,可以先用urllib.parse模块里的urlencode()编码。dataurllib.request.Requset()语法格式构造Request对象urllib.request.Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,method=None)urllib.request.Requset()语法格式它是一个字典,传递的是请求头数据,可以通过它构造请求头,也可以通过调用请求实例的方法add_header()来添加。headers例如:修改User_Agent头的值来伪装浏览器{'User-Agent':'Mozilla/5.0(compatible;MSIE5.5;WindowsNT)'}比如火狐浏览器设置:构造Request对象urllib.request.Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,method=None)urllib.request.Requset()语法格式指请求方的host名称或者IP地址。origin_req_host表示这个请求是否是无法验证的,默认为False,如请求一张图片如果没有权限获取图片那它的值就是true。unverifiable是一个字符串,用来指示请求使用的方法,如:GET,POST,PUT等。method构造Request对象importurllib.requestimporturllib.parseurl='/post'headers={'User-Agent':'Mozilla/5.0(compatible;MSIE5.5;WindowsNT)','Host':''}#定义头信息dict={'name':'germey'}data=bytes(parse.urlencode(dict),encoding='utf-8')req=request.Request(url=url,data=data,headers=headers,method='POST')response=request.urlopen(req)print(response.re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 店铺招工合同范例
- 工程便利服务合同范例
- 鱼塘改造工程合同范例
- 水厂代理加盟合同范例
- 2024至2030年圆模项目投资价值分析报告
- 2024至2030年双面CD盒项目投资价值分析报告
- 银行理财 合同范例
- 2024至2030年ABS抗菌防霉母料项目投资价值分析报告
- 2024年绿沱茶项目可行性研究报告
- 基坑开挖支护租赁合同范例
- 习思想教材配套练习题 第一章 新时代坚持和发展中国特色社会主义
- 部编版一年级下册道德与法治第3课《我不拖拉》教案(含2课时)
- 眼科护理的国内外发展动态和趋势
- GB/T 43564-2023中小学合成材料面层田径场地
- 校园帮帮项目介绍
- 食品卫生健康教育知识讲座
- 安保维稳工作管理制度
- 人教版英语四年级上册重点语法总结
- 饲料厂常见事故和预防措施
- 重点专科五年发展规划(风湿科)
- Unit 4 What's the best movie theater Section B (2b) reading教学设计人教新目标八年级英语上册
评论
0/150
提交评论