大数据采集与预处理(微课版) 课件 项目2 动态网页数据采集_第1页
大数据采集与预处理(微课版) 课件 项目2 动态网页数据采集_第2页
大数据采集与预处理(微课版) 课件 项目2 动态网页数据采集_第3页
大数据采集与预处理(微课版) 课件 项目2 动态网页数据采集_第4页
大数据采集与预处理(微课版) 课件 项目2 动态网页数据采集_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

项目二

动态网页数据采集目录Content1使用Requests库完成“浪潮云说”网页数据采集2使用Urllib模块完成“新闻动态”网页数据采集项目导言零

在实际的开发中,所需数据是各种各样的,虽然在网络上有许多开源的数据集,但开源的数据集不一定符合我们的项目需求,因此项目需要的数据集需要主动获取。数据采集是数据分析必不可少的一环,这个时候学会数据采集的方法就显得尤为重要,本项目将使用Python相关http请求库完成网页数据的采集。学习目标零知识目标了解Urllib和Requests库相关概念熟悉Urllib和Requests库的方法掌握Urllib库中request模块使用精通动态网页数据采集的方法技能目标具备Urllib库相关模块的使用能力具备安装Requests库的能力具备使用Requests库完成网页数据采集的能力具备精通网页数据采集的能力素养目标具备善于发现和总结问题能力具备较强的学习能力和适应能力具备较强的沟通表达能力任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹request模块任务技能urlopen()、Request()、urlretrieve()error模块URLError、HTTPErrorparse模块urlparse()、urljoin()、quote()、unquote()任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹1request模块在Urllib库中,request是一个用于实现http请求模拟的模块,能够完成页面抓取、Cookie设置等工作。目前,request模块包含多个http请求方法。方法描述urlopen()页面获取Request()设置请求的相关参数urlretrieve()文件下载任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹(1)urlopen()urlopen()是request模块中不可或缺的一种方法,主要用于实现页面获取,通过指定url地址即可向页面发送请求,并以HTTPResponse类型的对象作为响应将页面内容返回。0102urlopen()方法包含参数参数描述url指定目标网站的URLdata指定表单数据,该参数默认为None,此时urllib使用get方法发送请求,当给参数赋值后,urllib使用post发送请求,并在该参数中携带表单信息timeout用来指定请求的等待时间,若超过指定时间还没获得响应,则抛出一个异常任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹

HTTPResponse对象方法方法描述read()获取数据readline()按行获取数据readlines()获取数据,并以行列表形式返回getcode()获取状态码geturl()获取url路径decode()数据解码getheaders()获取http请求头信息,当接收属性后,会返回头部信息中属性对应的值任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹(2)Request()在使用urlopen()方法对页面进行访问时,并不能对请求方式、请求头信息等请求参数进行设置,这时为了提高urlopen()方法的全面性,request模块提供了一个Request()方法,能够通过请求参数创建Request对象,并将该对象作为urlopen()方法的参数完成页面请求。参数描述url指定目标网站的URLdata访问页面时携带的数据headers请求头origin_req_host请求方的host名称或者IP地址unverifiable请求方的请求无法验证method请求方式设置Request()方法包含参数任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹headers参数包含属性属性描述User-Agent操作系统和浏览器的名称和版本accept浏览器端可以接受的媒体类型Accept-Encoding编码方法Accept-Language支持语言method参数包含属性GET获取POST提交HEAD获取头部信息PUT提交信息,原信息被覆盖DELETE提交删除请求任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹(3)urlretrieve()通过urlopen()方法,只能获取页面中的文本信息,当面对图片文件、音视频文件、文本文件等内容时,request模块提供了一个urlretrieve()方法,能够实现文件的下载操作。urlretrieve()方法包含参数参数描述url文件路径filename文件名称reporthook文件访问的超时时间,单位为秒data文件访问时携带的数据任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹2error模块在Urllib中,为了避免发送请求时出现访问不到服务器、访问被禁止等错误,Urllib提供了一个用于定义异常的error模块。目前,error模块包含了两个常用方法。方法描述URLError网络地址异常HTTPErrorhttp错误异常任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹(1)URLError在error模块中,URLError提供了多个URL地址相关的异常,如URL地址错误、网络错误等,并且在触发异常后,可通过“reason”属性查看引发异常的原因。URLError的语法格式:from

urllib

import

errortry:......except

error.URLErrorase:e.reason......任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹(2)HTTPErrorHTTPError与URLError基本相同,不同之处在于HTTPError除了“reason”属性外,还存在一些其他属性。HTTPError属性属性描述code状态码reason错误原因headers响应头任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹3parse模块在Urllib中,parse模块主要用于对指定的URL进行操作,如解析URL、合并URL等。parse模块常用方法方法描述urlparse()URL的解析urljoin()URL的拼接quote()编码unquote()解码任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹(1)urlparse()urlparse()方法用于将接收的URL路径解析成协议、域名、路径、参数、查询条件以及锚点等六个部分,并以元组的格式返回,在使用时urlparse()方法接收三个参数。参数描述urlURL地址scheme默认协议allow_fragments是否忽略锚点urlparse()方法参数任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹urlparse()的语法格式:fromurllibimportparseparse.urlparse(urlstring,scheme='',allow_fragments=True)urlparse()方法返回结果包含字段字段描述scheme协议netloc域名path路径params参数query查询条件fragment锚点任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹(2)urljoin()urljoin()方法用于URL路径的连接,在使用时会接收两个路径参数,之后会连接两个URL路径,连接时会使用第一个参数补齐第二个参数的缺失部分,当两个参数均为完整路径时,则以第二个为主。urljoin()的语法格式:fromurllibimportparseparse.urljoin(url1,url2)任务2-1:使用Urllib模块完成“新闻动态”网页数据采集壹(3)quote()、unquote()quote()和unquote()方法是一对功能相对的方法,其中,quote()方法用于对URL路径中包含的中文进行编码操作,而unquote()方法则用于对quote()方法编码后的内容执行解码操作。语法格式:fromurllibimportparseparse.quote(url)parse.unquote(url)2-1:任务实施壹抓取页面内容输入网站地址代码查看工具定位到新闻信息区域,分析代码结构创建NewsInformation.py文件读取Response对象中包含的页面内容通过error模块的URLError定义网络地址异常,将代码封装到getHTML函数中完成新闻动态页面数据采集任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰Requests简介及安装任务技能Requests是一个使用Python编写的http库Requests库主要有pip安装、wheel安装和源码安装等方式Requests基本使用get()、post()、head()、put()、patch()、delete()Requests高级使用会话对象、文件上传、超时设置、异常处理、证书认证、代理设置任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰1Requests简介及安装

在Python中,除了上述的Urllib库外,Requests库同样被用于数据的采集,Requests是一个使用Python编写的http库,基于Urllib建立,为解决Urllib存在的安全缺陷以及代码冗余等问题而被推出,方便快捷,可以大大减少工作量,完全满足开发的需要。任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰用wheel方式安装Requests库Step1输入/~gohlke/pythonlibs/进入Requests的wheel文件下载地址Step3在命令窗口输入“pipinstall+wheel文件路径”Step2单击指定的文件格式进行wheel文件的下载Step4进入Python交互式命令行,输入“importrequests”代码,没有出现错误说明Requests库安装成功任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰2Requests基本使用HTTP请求类型类型描述GET向服务端发送获取信息请求POST将数据发送到服务器以创建或更新资源HEAD向服务端请求HTTP头信息PUT向服务器端发送数据,从而更新信息PATCH对已知资源进行局部更新DELETE向服务端发送删除资源请求任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰Requests库请求方法方法描述get()获取HTML网页的主要方法post()获取HTML网页头信息的方法head()向HTML网页提交post请求的方法put()向HTML网页提交PUT请求的方法patch()向HTML网页提交局部修改请求delete()向HTML页面提交删除请求任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰(1)get()get()方法包含参数参数描述url页面的URL链接paramsURL额外参数,以字典或字节序列形式作为参数增加到URL中**kwargs控制访问的参数任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰**kwargs包含参数参数描述data字典、字节序列或文件对象,作为Request的内容jsonJSON格式的数据,作为Request的内容headers字典,HTTP定制头cookie字典或CooKiJar,作为Request中的cookieauth元祖,支持HTTP认证功能files字典类型,作为传输文件timeout超时时间,秒为单位proxies字典类型,设定访问代理服务器,可以增加登录认证allow_redirects重定向开关stream获取内容立即下载开关verity认证SSL证书开关cert本地SSL证书路径任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰Response对象包含属性属性描述status_code状态码text字符串形式页面内容content二进制形式页面内容encoding从HTTPheader中猜测的响应内容编码方式apparent_encoding从内容中分析出的响应内容编码方式cookies响应的cookieurlURL路径headers请求头信息任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰常用状态码状态码描述200请求成功301请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL400请求有语法错误,不能被服务器所理解401请求未经授权403服务器收到请求,但是拒绝提供服务404请求资源不存在500服务器发生不可预期的错误503服务器当前不能处理客户端的请求,一段时间后可能恢复正常任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰(2)post()post()方法包含参数参数描述url页面的URL链接data字典、字节序列或文件对象,作为Request的内容jsonJSON格式的数据,作为Request的内容**kwargs控制访问的参数任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰(3)head()语法格式:importrequestsrequests.head(url,**kwargs)任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰(4)put()语法格式:importrequestsrequests.put(url,data=None,**kwargs)任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰(5)patch()语法格式:importrequestsrequests.patch(url,data=None,**kwargs)任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰(6)delete()语法格式:importrequestsrequests.delete(url,**kwargs)任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰method包含参数值参数值描述GET获取HTML网页POST获取HTML网页头信息HEAD向HTML网页提交post请求PUT向HTML网页提交PUT请求PATCH向HTML网页提交局部修改请求DELETE向HTML页面提交删除请求任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰3Requests高级使用会话对象文件上传异常处理代理设置超时设置证书认证任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰(1)会话对象会话对象能够跨请求保持某些参数,也会在同一个Session实例发出的所有请求之间保持cookie,除此之外它还可以用来提升网络性能。语法格式:importrequestssession=requests.Session()session.get()任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰(2)文件上传

在使用post()方法提交数据时,不仅可以提交文本数据,还可以通过files参数的设置提交文件数据,实现文件的上传操作。语法格式:importrequests#获取文件files={'file':open('文件地址','打开方式')}#文件上传requests.post(url,files=files)任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰(3)超时设置

在Requests中,可通过timeout参数设置超时时间,单位为秒。语法格式:importrequestsrequests.get(url,timeout=0.1)任务2-2:使用Requests库完成“浪潮云说”网页数据采集贰(4)异常处理

在使用Requests库发送HTTP请求时,会出现访问失败而抛出异常的情况,这时为了能够快速的确定是哪种错误,可通过不同的方法进行判断。语法格式:importrequeststry:response=requests.get(url,timeout=0.5)exceptexceptions.Timeout:#异常处理代

温馨提示

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

评论

0/150

提交评论