欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Python 爬虫库 urllib 使用详解.docx

    • 资源ID:705618       资源大小:77.93KB        全文页数:19页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Python 爬虫库 urllib 使用详解.docx

    Python爬虫库urllib使用详解一、Pythonurllib库Pythonurllib库用于操作网页URL,并对网页的内容进行抓取处理。Python3的urllibourllib包包含以下几个模块:urllib.request-打开和读取URLo urllib.error-包含UrIlib.request抛出的异常。 urllib.parse-解析URLo urllib.robotparser-解析robots.txt文件。需要用的就是每个模块的内置方法和函数。大概方法如下图:readOdecodeOgeturlQinfoOgetcodeOerror.URLErrorOreasonreasoncodeheaderseror.ContetToSho11ErrorOrobotparser.RobotFiIeParserQset_url(urreadOsite_map二、UrHib.request模块urllib.request定义了一些打开URL的函数和类,包含授权验证、重定向、浏览器Ce)OkieS等。urllib.request可以模拟浏览器的一个请求发起过程。这里主要介绍两个常用方法,urlopen和Requesto1. urlopen函数语法格式如下:urllib.request.urlopen(url,data=None,timeout,*lCafiIe=None,capath=None,CadefauIt=FaIse,Context=None)url:url地址。data:发送到服务器的其他数据对象,默认为None0timeout:设置访问超时时间。cafile和capath:cafile为CA证书,capath为CA证书的路径,使用HTTPS需要用到。cadefault:已经被弃用。context:SSLSSLCOnteXt类型,用来指定SSL设置。示例:importurllibrequest#导入UHlibreques七模块UrI=UrIIib-requestarlopen("h七七ps:/wwwbaiducomu)#打开读取baidu信息print(ur!read()-decode(lutf-8,)#"»获取所有信息,并decode。命令将网页的信息进行解码运行结果:<!DOCTYPEhtml><!-STATUSOK-XhtmIxheadxmetahttp-Squiv=nContent-Type"content="text/html;charset=utf-8"><metahttp-equiv=X-UA-CompatibIe"content="IE=edgezchrome=1"><metacontent="always"name="htmlcolor:#000;overflow-y:scroll;overtlow:-moz-scrollbarsbody,button,input,select,textareafont-size:12px;font-family:AriaI,sans-serifhl,h2,h3,h4,h5,h6font-size:100%)emfont-style:normalsmallfont-size:12pxolfullist-stylemoneatext-decoration:nonea:hovertext-decoration:underlinelegendcolor:#000fieldsetimgborderObutton,inputzselect,t×tareafont-size:100%response对象是http.client.HTTPResponse类型,主要包含read、readinto>getheadergetheadersfileno等方法,以及msg>versionstatus>reason>debuglevekclosed等属性。常用方法:read():是读取整个网页内容,也可以指定读取的长度,如read(300)o获取到的是二进制的乱码,所以需要用到decode。命令将网页的信息进行解码。 readline()-读取文件的一行内容。 readlines()-读取文件的全部内容,它会把读取的内容赋值给一个列表变量。 info():返回HTTPMeSSage对象,表示远程服务器返回的头信息。 getcode():返回HttP状态码。如果是http请求,200请求成功完成;404网址未找到。 geturl():返回请求的UrI。2、Request类我们抓取网页一般需要对headers(网页头信息)进行模拟,否则网页很容易判定程序为爬虫,从而禁止访问。这时候需要使用到urllib.request.Request类:classurllib.request.Request(url,data=Noe,headers=,origin_req_host=None,UnverifiabIe=FaIse,method=None) url:url地址。data:发送到服务器的其他数据对象,默认为None0headers:HTTP请求的头部信息,字典格式。origin_req_host:请求的主机地址,IP或域名。unverifiable:很少用整个参数,用于设置网页是否需要验证,默认是False0。method:请求方法,如GET、POST、DELETE.PUT等。示例:importurllibrequest#导入模块url="卜七七awwwbaidaCom”#网页连接headers=“UseLAgent":"用。ZJlIa50(WindowsNT100;UJin64;x64)APPIeuJebKi七53736(KHTHJHkeGeCkO)Chrome/8003987122SaFari53736"# 定义headers,模拟浏览器访问req=urllibrequest-Requesturl=urlfheadersheaders)# 模拟浏览器发送,访问网页response=IArIIib-requestirlopen(req)# 获取页面信息printCresponseread()decode(,utf-8n)三、UrHib.error模块urllib.error模块为urllib.request所引发的异常定义了异常类,基础异常类是URLErrorourllib.error包含了两个方法,URLError和HTTPErroroURLError是OSErrOr的一个子类,用于处理程序在遇到问题时会引发此异常(或其派生的异常),包含的属性reason为引发异常的原因。HTTPError是URLError的一个子类,用于处理特殊HTTP错误例如作为认证请求的时候,包含的属性code为HTTP的状态码,reason为引发异常的原因,headers为导致HTTPError的特定HTTP请求的HTTP响应头。区别:URLError封装的错误信息一般是由网络引起的,包括UH错误。HTTPError封装的错误信息一般是服务器返回了错误状态码。关系:URLErrOr是OSERROR的子类,HTTPElTOr是URLErTOr的子类。1.URLError示例fromurllibimportrequestfromurllibimporterrorif_name_=_main_":#一个不存在的连接url="h七七p:/wwwbaiiiduuuu,com/"req=requestRequest(ur!)try:response=requestur!open(req)htm!=responseread()decode(,utf8,)print(htm!)excepterror-URLErrorase:print(ereason)返回结果:Errno-2Nameorservicenotknownreason:此错误的原因。它可以是一个消息字符串或另一个异常实例。2.HTTPError示例fromurllibimportrequestIfromUrlIibimporterror-namemainurl=“http:WWWreq=request.Request(url)try:response=request.urlopen(req)html=response,read().decode(Utf-8l面Q(html)excepterror.HTTPErrorase:Q(e.code)返回结果:code一个HTTP状态码,具体定义见RFC2616o这个数字的值对应于存放在http.server.BaseHTTPRequestHandler.responses代码字典中的某个值。reason这通常是一个解释本次错误原因的字符串。headers导致HTTPError的特定HTTP请求的HTTP响应头。3.URLEITOr和HTTPErTOr混合使用注意:由于HTTPError是URLError的子类,所以捕获的时候HTTPError要放在URLError的上面。示例:fromurllibimportrequestfromurllibimporterrorif_name_="_main_,t:# 网站服务器上不存在资源url="h七七p:/www,baiduComnoh七ml"req=request*Request(url)try:response=request-urlopen(req)# html=response-read()decode(,utf8,)excepterror-HTTPErrorase:print(ecode)excepterror-URLErrorase:print(ecode)如果不用上面的方法,可以直接用判断的形式。fromurllibimportrequestfromurllibimporterrorif_name_="_main_z,;# 网站服务器上不存在资源url=,httptwAbaiducom/nohtm!nreq=request*Request(url)try:response=requestur!open(req)# html=response-read()decode(tutf8,)excepterror-URLErrorase:ifhasattr(e,code,):Prin七("HTTPError")print(ecode)el

    注意事项

    本文(Python 爬虫库 urllib 使用详解.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开