Python网络爬虫 课件 项目3:Urllib请求库_第1页
Python网络爬虫 课件 项目3:Urllib请求库_第2页
Python网络爬虫 课件 项目3:Urllib请求库_第3页
Python网络爬虫 课件 项目3:Urllib请求库_第4页
Python网络爬虫 课件 项目3:Urllib请求库_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

项目三

urllib请求库任务1发送网页请求任务2网页下载任务1发送网页请求任务引入小白接受Python爬虫的一堆理论知识后,觉得还是需要具体进行操作才能灵活应用,从最简单的urllib库开始学起。那么,urllib库中哪些函数可以实现网页请求的发起,不同网页请求函数有哪些异同?知识准备利用urlopen函数可以实现最基本请求的发起,如果请求中需要加入Headers等信息,需要利用更强大的复杂网络请求函数Request来构建一个请求。一、基本HTTP请求1.基本请求函数urlopen函数是一个特殊的处理器对象opener,用来实现基本的HTTP请求,接受服务器返回的响应数据,该函数不支持代理、cookie等其他的HTTP/HTTPS高级功能。2.显示网页响应内容urlopen函数获取的是HTTPResponse类型的返回对象,想要获取网页的内容需要使用其对应的属性函数,见表。

属性函数表案例——获取公司数据石家庄三维书屋文化传播有限公司网址为/,如图所示,发送HTTP请求,获取网页信息。3.网络超时超时即当网络设备想在某个特定时间内从另一网络设备上接收信息,但是失败的情况。案例——设置请求超时时间发送HTTP请求,设置超时时间,获取图所示的百度首页的信息。4.请求信息编码设置在Python中,用浏览器发送请求的时候,如果url中包含了中文或者其他特殊字符,系统显示错误。案例——爬取铁路车次信息在的中国铁路12306首页如图所示,使用urlopen函数爬取数据。搜索从上海到天津的车次,如图所示,使用urlopen函数爬取数据。该网页链接中包含中文字符,运行结果图所示:用浏览器发送请求的时候,如果url中包含了中文或者其他特殊字符,那么浏览器会自动进行编码。上海的编码为E4%B8%8A%E6%B5%B7天津的编码为%E5%A4%A9%E6%B4%A5运行结果如图所示:案例——不同方式发送请求发送HTTP请求,默认以GET方式发送请求,若在发送请求中添加附加信息data,以POST方式发送请求。httpbi提供了简单的HTTP请求和回复测试服务,提供了GET/PUT/POST/PATCH/DELETET常见方法,可以把请求头、参数等返回,方便调试http请求。可作为演示服务,测试平台功能。

编码显示二、Request网络请求http中的headers称为消息头,包含general(基本信息),responseHeader(响应头),requestheader(请求头),paramer(请求参数)。其中,general基本信息中包含:requesturl:请求的urlrequestmethed:请求的方式statuscode:响应码remoteaddress:远程地址,包含ip和端口案例——发送Request请求获取官网数据python官网网址为/,如图所示,发送Request请求,获取网页信息。三、设置请求头使用POST方法可以允许客户端给服务器提供较多信息,POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。设置请求头包含两种方法:在构造Request请求时,定义一个字典类型(dictionary)的headers参数,直接构造通过调用请求add_header()方法添加。请求头headers由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:User-Agent:产生请求的浏览器类型,默认参数为"Python-urllib/3.6",指明请求是由urllib发送的。Accept:客户端可识别的内容类型列表。Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。遇到一些验证User-Agent的网站时,需要借助于urllib.request中的Request对象自定义Headers。爬取网页数据案例——添加头信息获取网页数据爬虫通过浏览器获取网页时,python默认浏览器Python-urllib,通过添加请求头,将浏览器修改为火狐浏览器,修改IP地址。四、Handler方法发送请求Python爬虫模拟浏览器访问网页过程中,使用Handler方法可以处理更加复杂的页面,在发送请求时需要创建Handler处理器,Handler处理器类似中央处理器的作用,中央处理器的功能主要是解释计算机指令以及处理计算机软件中的数据。在urllib.request(请求模块)中,Handler方法发送请求步骤如图所示。(1)创建处理器对象使用相关的Handler处理器来创建特定功能的处理器对象(2)创建自定义opener对象通过urllib.request.build_opener()方法可以使用这些处理器对象,创建自定义opener对象;(3)发送请求创建了自定义的opener对象,使用open()方法发送请求。案例——自定义opener对象使用BaseHandler方法创建自定义的处理器对象,发送请求。五、设置代理IP访问代理IP之前需要先设置代理服务器。在urllib中,urllib.request.ProxyHandler函数可动态的设置代理IP,将代理IP以字典形式传入。字典参数proxies的键名为协议类型,如HTTP、HTTPS,值是‘ip:port’,对每个ip字典案例——创建代理IP在37699端口下创建HTTP、HTTPS代理服务,代理为:6。六、身份验证Cookie是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据。简单的说,就是指客户端用于记录用户身份、维持登录的信息,如账号和密码。开源爬虫都支持在爬取时指定cookies,模拟登陆主要是依靠cookies。cookies除了可以手动获取,还可以用http请求模拟登陆,模拟浏览器自动登陆获取cookie。1.模拟浏览器自动登陆获取cookie在Python中,http.CookieJar函数用于模拟登陆获取浏览器的cookie,将cookie存储在内存文件中。从网页上设置的cookie在浏览器关闭的时候会自动将清除设置,为了实现保存内容到本地,需要先创建Cookie文件,函数见表。案例——获取网页cookie信息通过Handle方法发送请求,获取cookie信息。2.保存cookieCookie是一个保存在客户机中的简单的文本文件,这个文件与特定的Web文档关联在一起,保存了该客户机访问这个Web文档时的信息,实现记录用户个人信息的功能。当客户机再次访问这个Web文档时这些信息可供该文档使用。案例——保存百度cookie文件通过Handle方法发送请求,爬取百度首页,创建与Mozilla浏览器兼容的文件,保存即将过期的cookie的信息。3.加载cookie一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的Web站点的信息。cookie文件案例——加载淘宝cookie信息通过Handle方法发送请求,爬取淘宝网的数据,加载即将过期的cookie的信息。在D:/NewPython路径下打开taobao_cookie.txt文件,如图所示。任务2网页下载任务引入小白写论文需要统计各城市2021年的天气数据,查询网页数据作为基础数据。论文经过几次修改后,老师最后提出意见,小白的数据不够全面,需要给出各城市五年内的天气数据。小白已经找不到当时查询数据的网页。最后利用Python爬取数据时下载的文件中找到了网页,采补全论文需要的数据。那么,urllib库中哪些函数可以实现网页保存,保存文件有哪些格式?文件保存位置在哪里?知识准备网页是一个包含HTML标签的纯文本文件,它可以存放在世界某个角落的某一台计算机中,是万维网中的一“页”,是超文本标记语言格式,是标准通用标记语言的一个应用,文件扩展名为.html或.htm。网页下载是网络爬虫的目的。一、网页结构网页一般由三部分组成,分别是HTML(超文本标记语言)、CSS(层叠样式表)和JScript(活动脚本语言)。1.HTMLHTML是整个网页的结构,相当于整个网站的框架。带“<”、“>”符号的都是属于HTML的标签,并且标签都是成对出现的。3.JScriptJScript表示网页功能。交互的内容和各种特效都在JScript中,JScript描述了网站中的各种功能。二、写入网页文件解析网页数据后就需要存储数据,数据保存的形式有很多,最简单的形式是直接保存为文本文件,如TXT、JSON、csv等。另外,还可以将这些数据保存到数据库中。在Python中,open函数用来新建文件,保存网页信息,若文件存在,以文本格式打开该文件;如果文件不存在,自动创建一个空白的文本文件,如果open无法打开文件,则显示OSError。它的使用格式见表。案例——下载微信公众平台网页文件微信公众平台网址为/,如图所示。发送HTTP请求,下载网页数据,保存为txt文件。TXT文本的操作非常简单,且其几乎兼容任何平台,但是它有个缺点,那就是不利于检索。文本文件三、网页文件下载urlretrieve函数将url指定的html文件下载到本地的硬盘中,该函数返回一个二元组(filename,mine_hdrs),该命令的调用格式如下:urllib.request.urlretrieve(url[,filename[,reporthook[,data]]])url:指定要下载网页的网址。filename:指定了保存到本地的路径;reporthook:回调函数,当连接上服务器.以及相应的数据块传输完毕的时候会触发该回调。案例——下载图虫网网页文件图虫网是优质摄影师交流社区,网址为/,如图所示,下载该网页数据,保存为指定格式的文件。运行之后,在对应路径下的显示txt文件,如图所示.运行之后,在对应路径下的创建html、pdf文件,如图所示。案例——缓存临时文件利用urlretrieve函数下载网页时,如果不指定filename参数,下载的网页数据会存为临时文件,缓存的临时文件名称随机产生。项目实战:实战一下载Python学习网址学习应该从被动、自发的学习转向主动、自觉的学习,主动将之付诸实践。小白在知乎上搜索Python的安装方法,网址如下:/p/111168324?from_voters_page=true利用爬虫下载该文档,在课余时间进行自主学习。(1)使用urllib.req

温馨提示

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

评论

0/150

提交评论