python爬虫入门request 常用库介绍整理_第1页
免费预览已结束,剩余16页可下载查看

下载本文档

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

文档简介

1、python爬虫入门request 常用库介绍整理网络爬虫(又被称为网页蜘蛛,网络机器人,在foaf社区中间,更常常的称为网页追赶者),是一种根据一定的规章,自动地抓取万维网信息的程序或者脚本。另外一些不常用法的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。其实通俗的讲就是通过程序去猎取web页面上自己想要的数据,也就是自动抓取数据。你可以爬去妹子的,爬取自己想看看的视频。等等你想要爬取的数据,只要你能通过扫瞄器拜访的数据都可以通过爬虫猎取模拟扫瞄器打开网页,猎取网页中我们想要的那部分数据扫瞄器打开网页的过程:当你在扫瞄器中输入地址后,经过dns服务器找到服务器主机,向服务器发送一个哀求,服务器经

2、过解析后发送给用户扫瞄器结果,包括html,js,css等文件内容,扫瞄器解析出来最后展现给用户在扫瞄器上看到的结果所以用户看到的扫瞄器的结果就是由html代码构成的,我们爬虫就是为了猎取这些内容,通过分析和过滤html代码,从中猎取我们想要资源(文本,视频.)发起哀求通过http库向目标站点发起哀求,也就是发送一个request,哀求可以包含额外的header等信息,等待服务器响应猎取响应内容假如服务器能正常响应,会得到一个response,response的内容便是所要猎取的页面内容,类型可能是html,json字符串,二进制数据(或者视频)等类型解析内容得到的内容可能是html,可以用正

3、则表达式,页面解析库举行解析,可能是json,可以挺直转换为json对象解析,可能是二进制数据,可以做保存或者进一步的处理保存数据保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件扫瞄器发送消息给网址所在的服务器,这个过程就叫做htpp request服务器收到扫瞄器发送的消息后,能够按照扫瞄器发送消息的内容,做相应的处理,然后把消息回传给扫瞄器,这个过程就是http response扫瞄器收到服务器的response信息后,会对信息举行相应的处理,然后展示哀求方式主要有:get/post两种类型常用,另外还有head/put/delete/optionsget和post的

4、区分就是:哀求的数据get是在url中,post则是存放在头部get:向指定的资源发出显示哀求。用法get办法应当只用在读取数据,而不应该被用于产生副作用的操作中,例如在web application中。其中一个缘由是get可能会被网络蜘蛛等任意拜访post:向指定资源提交数据,哀求服务器举行处理(例如提交表单或者上传文件)。数据被包含在哀求本文中。这个哀求可能会创建新的资源或修改现有资源,或二者皆有。head:与get办法一样,都是向服务器发出指定资源的哀求。只不过服务器将不传回资源的本文部分。它的益处在于,用法这个办法可以在不必传输所有内容的状况下,就可以猎取其中关于该资源的信息(元信息或

5、称元数据)。put:向指定资源位置上传其最新内容。options:这个办法可使服务器传回该资源所支持的全部http哀求办法。用&39;*&39;来代替资源名称,向web服务器发送options哀求,可以测试服务器功能是否正常运作。delete:哀求服务器删除request-uri所标识的资源。哀求urlurl,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和拜访办法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的url,它包含的信息指出文件的位置以及扫瞄器应当怎么处理它。url的格式由三个部分组成:第一部分是协

6、议(或称为服务方式)。其次部分是存有该资源的主机ip地址(有时也包括端口号)。第三部分是主机资源的详细地址,如名目和文件名等。爬虫爬取数据时必需要有一个目标的url才可以猎取数据,因此,它是爬虫猎取数据的基本依据。哀求头包含哀求时的头部信息,如user-agent,host,cookies等信息,下图是哀求哀求百度时,全部的哀求头部信息参数哀求体哀求是携带的数据,如提交表单数据时候的表单数据(post)全部http响应的第一行都是状态行,依次是当前http版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。响应状态有多种响应状态,如:200代表胜利,301跳转,404找不到页面

7、,502服务器错误1xx消息——哀求已被服务器接收,继续处理2xx胜利——哀求已胜利被服务器接收、理解、并接受3xx重定向——需要后续操作才干完成这一哀求4xx哀求错误——哀求含有词法错误或者无法被执行5xx服务器错误——服务器在处理某个正确哀求时发生错误 常见代码: 200 ok 哀求胜利 400 bad request客户端哀求有语法错误,不能被服务器所理解 401 unauthorized哀

8、求未经授权,这个状态代码必需和报头域一起用法 403 forbidden 服务器收到哀求,但是否决提供服务404 not found 哀求资源不存在,eg:输入了错误的url 500 internal server error服务器发生不行预期的错误 503 server unavailable 服务器当前不能处理客户端的哀求,一段时光后可能复原正常 301目标永远性转移 302 目标临时性转移响应头如内容类型,类型的长度,服务器信息,设置cookie,如下图响应体最主要的部分,包含哀求资源的内容,如网页html,,二进制数据等网页文本:如html文档,json格式化文本等:猎取到的是二进制文

9、件,保存为格式视频:同样是二进制文件其他:只要哀求到的,都可以猎取挺直处理json解析正则表达式处理beautifulsoup解析处理pyquery解析处理xpath解析处理浮现这种状况是由于,无数网站中的数据都是通过js,ajax动态加载的,所以挺直通过get哀求猎取的页面和扫瞄器显示的不同。如何解决js渲染的问题?分析ajaxselenium/webdriversplashpyv8,ghost.py文本:纯文本,json,xml等关系型数据库:如mysql,oracle,sql server等结构化数据库非关系型数据库:mongodb,redis等key-value形式存储requests

10、是用python语言基于urllib编写的,采纳的是apache2 licensed开源协议的http库假如你看过上篇文章关于urllib库的用法,你会发觉,其实urllib还是十分不便利的,而requests它会比urllib越发便利,可以节省我们大量的工作。(用了requests之后,你基本都不肯意用urllib了)一句话,requests是python实现的最容易易用的http库,建议爬虫用法requests库。默认安装好python之后,是没有安装requests模块的,需要单独通过pip安装我们可以看出response用法起来的确十分便利,这里有个问题需要注重一下:无数状况下的网站假

11、如挺直response.text会浮现乱码的问题,所以这个用法response.content这样返回的数据格式其实是二进制格式,然后通过decode()转换为utf-8,这样就解决了通过response.text挺直返回显示乱码的问题.哀求发出后,requests 会基于 http 头部对响应的编码作出有按照的推想。当你拜访 response.text之时,requests 会用法其推想的文本编码。你可以找出 requests 用法了什么编码,并且能够用法 response.encoding属性来转变它.如:不管是通过response.content.decode("utf

12、-8)的方式还是通过response.encoding="utf-8"的方式都可以避开乱码的问题发生requests里提供个各种哀求方式哀求基本get哀求带参数的get哀求,例子1假如我们想要在url查询字符串传递数据,通常我们会通过/get?key=val方式传递。requests模块允许用法params关键字传递参数,以一个字典来传递这些参数,例子如下:上述两种的结果是相同的,通过params参数传递一个字典内容,从而挺直构造url注重:其次种方式通过字典的方式的时候,假如字典中的参数为none则不会添加到url上解析json从结果

13、可以看出requests里面集成的json其实就是执行了json.loads()办法,两者的结果是一样的猎取二进制数据在上面提到了response.content,这样猎取的数据是二进制数据,同样的这个办法也可以用于下载以及视频资源添加headers和前面我们将urllib模块的时候一样,我们同样可以定制headers的信息,如当我们挺直通过requests哀求知乎网站的时候,默认是无法拜访的这样会得到如下的错误由于拜访知乎需要头部信息,这个时候我们在谷歌扫瞄器里输入就可以看到用户代理,将用户代理添加到头部信息这样就可以正常的拜访知乎了基本post哀求通过在发送post哀求时添加一个data参

14、数,这个data参数可以通过字典构造成,这样对于发送post哀求就十分便利同样的在发送post哀求的时候也可以和发送get哀求一样通过headers参数传递一个字典类型的数据响应我们可以通过response获得无数属性,例子如下结果如下:状态码推断requests还附带了一个内置的状态码查询对象主要有如下内容:100: (&39;continue&39;,),101: (&39;switching_protocols&39;,),102: (&39;processing&39;,),103: (&39;checkpoint&39;

15、,),122: (&39;uri_too_long&39;, &39;request_uri_too_long&39;),200: (&39;ok&39;, &39;okay&39;, &39;all_ok&39;, &39;all_okay&39;, &39;all_good&39;, &39;o/&39;, &39;?&39;),201: (&39;created&39;,),202: (&39;accepted&3

16、9;,),203: (&39;non_authoritative_info&39;, &39;non_authoritative_information&39;),204: (&39;no_content&39;,),205: (&39;reset_content&39;, &39;reset&39;),206: (&39;partial_content&39;, &39;partial&39;),207: (&39;multi_status&39;, &39

17、;multiple_status&39;, &39;multi_stati&39;, &39;multiple_stati&39;),208: (&39;already_reported&39;,),226: (&39;im_used&39;,),redirection.300: (&39;multiple_choices&39;,),301: (&39;moved_permanently&39;, &39;moved&39;, &39;o-&39;),302

18、: (&39;found&39;,),303: (&39;see_other&39;, &39;other&39;),304: (&39;not_modified&39;,),305: (&39;use_proxy&39;,),306: (&39;switch_proxy&39;,),307: (&39;temporary_redirect&39;, &39;temporary_moved&39;, &39;temporary&39;),308: (&

19、amp;39;permanent_redirect&39;,&39;resume_incomplete&39;, &39;resume&39;,), these 2 to be removed in 3.0client error.400: (&39;bad_request&39;, &39;bad&39;),401: (&39;unauthorized&39;,),402: (&39;payment_required&39;, &39;payment&39;),403: (

20、&39;forbidden&39;,),404: (&39;not_found&39;, &39;-o-&39;),405: (&39;method_not_allowed&39;, &39;not_allowed&39;),406: (&39;not_acceptable&39;,),407: (&39;proxy_authentication_required&39;, &39;proxy_auth&39;, &39;proxy_authenticatio

21、n&39;),408: (&39;request_timeout&39;, &39;timeout&39;),409: (&39;conflict&39;,),410: (&39;gone&39;,),411: (&39;length_required&39;,),412: (&39;precondition_failed&39;, &39;precondition&39;),413: (&39;request_entity_too_large&39;,),4

22、14: (&39;request_uri_too_large&39;,),415: (&39;unsupported_media_type&39;, &39;unsupported_media&39;, &39;media_type&39;),416: (&39;requested_range_not_satisfiable&39;, &39;requested_range&39;, &39;range_not_satisfiable&39;),417: (&39;expec

23、tation_failed&39;,),418: (&39;im_a_teapot&39;, &39;teapot&39;, &39;i_am_a_teapot&39;),421: (&39;misdirected_request&39;,),422: (&39;unprocessable_entity&39;, &39;unprocessable&39;),423: (&39;locked&39;,),424: (&39;failed_dependency&

24、39;, &39;dependency&39;),425: (&39;unordered_collection&39;, &39;unordered&39;),426: (&39;upgrade_required&39;, &39;upgrade&39;),428: (&39;precondition_required&39;, &39;precondition&39;),429: (&39;too_many_requests&39;, &39;too_man

25、y&39;),431: (&39;header_fields_too_large&39;, &39;fields_too_large&39;),444: (&39;no_response&39;, &39;none&39;),449: (&39;retry_with&39;, &39;retry&39;),450: (&39;blocked_by_windows_parental_controls&39;, &39;parental_controls&39;),451: (&39;unavailable_for_legal_reasons&39;, &39;legal_reasons&39;),499: (&39;client_closed_request&39;,),server error.500: (&39;internal_server_error&39;, &39;server_error&39;,

温馨提示

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

评论

0/150

提交评论