收藏 分销(赏)

整理的用Python编写的爬虫文档.pdf

上传人:曲**** 文档编号:230032 上传时间:2023-03-20 格式:PDF 页数:111 大小:5.44MB
下载 相关 举报
整理的用Python编写的爬虫文档.pdf_第1页
第1页 / 共111页
整理的用Python编写的爬虫文档.pdf_第2页
第2页 / 共111页
整理的用Python编写的爬虫文档.pdf_第3页
第3页 / 共111页
整理的用Python编写的爬虫文档.pdf_第4页
第4页 / 共111页
整理的用Python编写的爬虫文档.pdf_第5页
第5页 / 共111页
点击查看更多>>
资源描述

1、Python爬虫入门教程 Python网络爬虫(一):网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页 中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这 个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互 联网上所有的网页都抓取下来。这样看来,网络爬虫就是一个爬行程序,一个抓取网页的程序。网络爬虫的基本操作是抓取网页。那么如何才能

2、随心所欲地获得自己想要的页面?我们先从URL开始。二、浏览网页的过程抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样 的。比如说你在浏览器的地址栏中输入 这个地址。打开网页的过程其实就是浏览器作为一个浏览的客户端,向服务器 端发送了 一次请求,把服务器端的文件抓到本地,再进行解释、展现。HTML是一种标记语言,用标签标记内容并加以解析和区分。浏览器的功能是将获取到的HTML代码进行解析,然后将原始的代码 转变成我们直接看到的网站页面。三、URI和URL的概念和举例简单的来讲,URL就是在浏览器端输入 的 http:/ 这个字符串。在理解URL之前,首先要理解URI的概念。什么是U

3、RI?Web上每种可用的资源,如HTML文档、图像、视频片段、程序等都 由-通用资源标志符(Universal Resource Identifier,URI)进行定 位。URI通常由三部分组成:访问资源的命名机制;存放资源的主机名;资源自身 的名称,由路径表示。如下面的URI:http:/ 上,通过路径7html/html40访问。2四、URL的理解和举例URL 是 URI 的一个子集。它是 Uniform Resource Locator 的缩写,译为统一资源定位符。通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。采用URL可以用一种统一

4、的格式来描述各种信息资源,包括文件、服 务器的地址和目录等。U R L的一般格式为(带方括号的为可选项):protocol:/hostname:port/path/;parameters?query#fragmentURL的格式由三部分组成:第一部分是协议(或称为服务方式)。第二部分是存有该资源的主机IP地址(有时也包括端口号)。第三部分是主机资源的具体地址,如目录和文件名等。第一部分和第二部分用符号隔开,第二部分和第三部分用/符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。五、URL和URI简单比较URI属于URL更低层次的抽象,一种字符串文本标准。换句话说,URI属于父类,

5、而URL属于URI的子类。URL是URI的一 个子集。URI的定义是:统一资源标识符;URL的定义是:统一资源定位符。3二者的区别在于,URI表示请求服务器的路径,定义这么一个资源。而URL同时说明要如何访问这个资源(http:/)。下面来看看两个URL的小例子。1.HTTP协议的URL示例:使用超级文本传输协议HTTP,提供超级文本信息服务的资源。例:http:/ 。超级文本文件(文件类型为.html)是在目录/channel下的welcome.htmo这是中国人民日报的一台计算机。例:http:/ 页内容版本号:Python2.7.5,Python3改动较大,各位另寻教程。所谓网页抓取,就

6、是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端,然后读取服务器端的响应资源。在Python中,我们使用urllib2这个组件来抓取网页。urllib2 是 Python 的一个获取 URLs(Unifonri Resource Locato的 组件。它以urlopen函数的形式提供了一个非常简单的接口。最简单的urllib2的应用代码只需要四行。我们新建 Y文件urllib2_test01.py来感受一下urllib2的作用:python view pl aincopyC|1.import url

7、l ib22.response=url l ib2.url open()http:/ html=response.read()4.print html5按下F5可以看到运行的结果:我们可以打开百度主页,右击,选择查看源代码(火狐OR谷歌浏览器均可),会发现也是完全一样的内容。也就是说,上面这四行代码将我们访问百度时浏览器收到的代码们全部 打印了出来。这就是一个最简单的urllib2的例子。6除了http:,URL同样可以使用ftp:,file:等等来替代。HTTP是基于请求和应答机制的:客户端提出请求,服务端提供应答。urllib2用一个Request对象来映射你提出的HTTP请求。在它最简单

8、的使用形式中你将用你要请求的地址创建一个Request对 象,通过调用urlopen并传入Request对象,将返回一个相关请求 response 对象,这个应答对象如同一个文件对象,所以你可以在Response中调ffl.read()o我们新建一个文件urllib2_test02.py来感受一下:python view pl aincopyC1.import url l ib22.req=url l ib2.Request()http:/13.response=url l ib2.url open(req)I 4.the_page=response.read()5 print the_pag

9、e可以看到输出的内容和testOl是一样的。urllib2使用相同的接口处理所有的URL头。例如你可以像下面那样创 建一个ftp请求。python view pl aincopyC1,req=url l ib2.Request(ftp:/exampl e,com/1)在HTTP请求时,允许你做额外的两件事。1.发送data表单数据7这个内容相信做过Web端的都不会陌生,有时候你希望发送一些数据到URL(通常URL与CGI通用网关接口脚本,或其他WEB应用程序挂接)。在HTTP中,这个经常使用熟知的POST请求发送。这个通常在你提交一个HTML表单时由你的浏览器来做。并不是所有的POSTs都来源

10、于表单,你能够使用POST提交任意的数 据到你自己的程序。一般的HTML表单,data需要编码成标准形式。然后做为data参数 传到Request对象。编码工作使用urllib的函数而非urllib2o我们新建一个文件urllib2_test03.py来感受一下:python view pl aincopyC1.import url l ib2.import url l ib23.4.url=1http:/ ues=name:WHY,)7.l ocation:SDU,8.l anguage:Python 9I 10.data=url l ib.url encode(val ues)#编码工作

11、111.req=url l ib2.Request(url data)#发送请求同时传 data 表单|12.response=url l ib2.url open(req)#接受反馈的信息|13.the_page=response.read()#读取反馈的内容如果没有传送data参数,urllib2使用GET方式的请求。GET和POST请求的不同之处是POST请求通常有“副作用,它们会由于某种途径改变系统状态(例如提交成堆垃圾到你的门口)。Data同样可以通过在Get请求的URL本身上面编码来传送。thon view pl aincopyC1.import url l ib22.import

12、 url l ib3.4.data=5.6.dataname=WHYdata l ocation =SDU8.datal anguage=PythonI10.url _val ues=url l ib.url encode(data)11.print url _val ues12.13 name=Somebody+Here&l anguage=Python&l ocation=Northampton14.url=1http:/www.exampl e.cgi115.ful l _url=url+1?1+url _val ues|16.1117.data=url l ib2.open(ful l

13、 _url)这样就实现了 Data数据的Get传送。2.设置Headers至|J http请求有一些站点不喜欢被程序(非人为访问)访问,或者发送不同版本的内 容到不同的浏览器。默认的 urilib2 把自己作为/Python-urllib/x.y,(x 和 y 是 Python 主 版本和次版本号,例如Python-urllib/2.7),这个身份可能会让站点迷惑,或者干脆不工作。浏览器确认自己身份是通过User-Agent头,当你创建了一个请求对象,你可以给他一个包含头数据的字典。下面的例子发送跟上面一样的内容,但把自身模拟成Internet Explorer。9(多谢大家的提醒,现在这个D

14、emo已经不可用了,不过原理还是那 样的)。python view pl aincopyC?1.import url l ib2.import url l ib23.4.url=http:/ l a/4.0(compatibl e;MSIE 5.5;Windows NT)7.val ues=name:WHY,8.l ocation:SDU,9.l anguage:Python 10.11.headers=User-Agent:user_agent 12.data=url l ib.url encode(val ues)13.req=url l ib2.Request(url,data,head

15、ers)14.response=url l ib2.url open(req)115.the_page=response.read()Python网络爬虫(三):异常的处理和HTTP状态码的分类先来说一说HTTP的异常处理问题。当 urlopen 不能够处理一response 时,产生 urlErroro不过通常的Python APIs异常如ValueErroisTypeError等也会同时产 生。HTTPError是urlError的子类,通常在特定HTTP URLs中产生。l.URLError通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器 不存在的情况下产生。这种

16、情况下,异常同样会带有“reason”属性,它是一个tuple(可以理 解为不可变的数组),10包含了一个错误号和一个错误信息。我们建一个urllib2_test06.py来感受一下异常的处理:python view pl aincopy1.import url l ib22.3.req=url l ib2.Request(http:/1)4.5 try:url l ib2.url open(req)6.7.except url l ib2.URLError e:8.print e.reason按下F5,可以看到打印出来的内容是:Errno 11001 getaddrinfo failed也就

17、是说,错误号是11001,内容是getaddrinfo failed2.HTTPError服务器上每一个HTTP应答对象response包含一个数字状态码”。有时状态码指出服务器无法完成请求。默认的处理器会为你处理一部分 这种应答。例如:假如response是一个重定向,需要客户端从别的地址获取文档,urllib2将为你处理。其他不能处理的,urlopen会产生一个HTTPErroro典型的错误包含“404”(页面无法找到),403”(请求禁止),和40V(带 验证请求)。HTTP状态码表示HTTP协议所返回的响应的状态。比如客户端向服务器发送请求,如果成功地获得请求的资源,则返回的 状态码为

18、200,表示响应成功。11如果请求的资源不存在,则通常返回404错误。HTTP状态码通常分为5种类型,分别以15五个数字开头,由3位整数组成:200:请求成功 处理方式:获得响应的内容,进行处理201:请求完成,结果是创建了新资源。新创建资源的URI可在响应的 实体中得到 处理方式:爬虫中不会遇到202:请求被接受,但处理尚未完成 处理方式:阻塞等待204:服务器端已经实现了请求,但是没有返回新的信息。如果客户是用户代理,则无须为此更新自身的文档视图。处理方式:丢弃300:该状态码不被HTTP/1.0的应用程序直接使用,只是作为3XX类型回应的默认解释。存在多个可用的被请求资源。处理方式:若

19、程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过 该U RL来访问此资源 处理方式:重定向到分配的U RL302:请求到的资源在一个不同的URL处临时保存 处理方式:重定向到临时的URL304请求的资源未更新 处理方式:丢弃400非法请求 处理方式:丢弃401未授权 处理方式:丢弃403禁止 处理方式:丢弃12404没有找到 处理方式:丢弃5XX回应代码以5开头的状态码表示服务器端发现自己出现错误,不能继续执行请求 处理方式:丢弃HTTPError实例产生后会有一个整型code属性,是服务器发送的相关 错误号。Err

20、or Codes 错误码因为默认的处理器处理了重定向(300以外号码),并且100-299范围的号码指示成功,所以你只能看到400-599的错误号码。BaseHTTPServer.BaseHTTPRequestHandler.response 是个彳艮有 用的应答号码字典,显示了 HTTP协议使用的所有的应答号。当一个错误号产生后,服务器返回一个HTTP错误号,和一个错误页面。你可以使用HTTPError实例作为页面返回的应答对象response。这表示和错误属性一样,它同样包含了 readgeturl,和info方法。我们建一个urllib2_test07.py来感受一下:python vi

21、ew pl aincouv1.import url l ib22.req=url l ib2.Request()http:/ l mewhy3.4.try:5.url l ib2.url open(req)6.7.except url l ibZ.URLError,e:8.9.print e.code10.#print e.read()13按下F5可以看见输出了 404的错误码,也就说没有找到这个页面。3.Wrapping所以如果你想为HTTPError或URLError做准备将有两个基本的办法。推荐使用第二种。我们建一个urllib2_test08.py来示范一下第一种异常处理的方案:pyt

22、hon view Dl dincopv|1.from url l ib2 import Request,url open,URLError,HTTPError2.,3 req=Request(1http:/ l mewhy1)L.5.try:6.o.response=url open(req)8.9.except HTTPError,e:10.11.print The server coul dn1t ful fil l the request.112.13.print 1 Error code:e.code14.15.except URLError,e:16.17.print 1 We fa

23、il ed to reach a server.,18.19.print Reason:e.reason20.121.el se:22.print 1 No exception was raised.1123.#everything is fine和其他语言相似,甘y之后捕获异常并且将其内容打印出来。这里要注意的一点,except HTTPError必须在第一个,否则exceptURLError将同样接受到HTTPError o因为HTTPError是URLError的子类,如果URLError在前面它会捕捉14到所有的 URLError(包括 HTTPError 我们建一个urllib2_t

24、est09.py来示范一下第二种异常处理的方案:python view pl aincopy|1.from url l ib2 import Request,url open,URLError,HTTPError2.3.req=Request()1http:/ l mewhy14.5.try:6.7.response=url open(req)8.9.except URLError,e:10.11.if hasattr(e,1 code):12.13.print The server coul dn1t ful fil l the request.114.15.print 1 Error co

25、de:e.code16.17.el if hasattr(eJ 1 reason):18.19.print 1 We fail ed to reach a server.120.pi.print Reason:e.reason22.123.24.el se:|25.print No exception was raised.126.#everything is fineIRytbwQ网络爬虫(四):Opener与 的介绍和实例应用更好的学习网址:http:www.voidspace.org.uk/python/articles/urllib2.shtml#openers-and-handler

26、s15以下为个人学习笔记。在开始后面的内容之前,先来解释一下urllib2中的两个个方法:infoand geturlurlopen返回的应答对象response(或者HTTPError实例)有两个很有 用的方法info()和geturl()l.geturl():这个返回获取的真实的URL,这个很有用,因为urlopen(或者opener 对象使用的)或许会有重定向。获取的URL或许跟请求URL不同。以人人中的一个超级链接为例,我们建一个urllib2_testl0.py来比较一下原始URL和重定向的链接:python view Dl aincoDV1.from url l ib2 impor

27、t Request,url open,URLError HTTPErrorI2I34.ol d_url=http:/ UZuP5.req=Request(ol d_url)6.response=url open(req)7.print Ol d url:+ol d_url8.print Real url:+response.geturl()运行之后可以看到真正的链接指向的网址:Old url:/ ZuPR eal url:/www.p o lyu.edu.hk/p o lyuchallen ge/be3t_o f _tlie_be3t_elevaco r_p itch_award/bbca_v

28、o rin o _p ro ce33.p hp?vo ted_teain _id=670&3ectio n=ltebbca_year_id=3 I2.info():这个返回对象的字典对象,该字典描述了获取的页面情况。通常是服务 器发送的特定头headerso目前是httplib.HTTPMessage实例。16经典的 headers Content-length,Content-type,和其他内容。我们建一个urllib2_testll.py来测试一下info的应用:thon view Dl aincoDV1.from url l ib2 import Request,url open,UR

29、LError,HTTPError2.3.ol d_url=http:/4.req=Request(ol d_url)5.response=url open(req)6.print Info():7.print response.info()运行的结果如下,可以看到页面的相关信息:=R ES TAR T=In f o(:Date:Tue,14 May 2013 06:10:01 GMTS erver:BW5/1.0Co n ten t-L en gth:10450Co n ten t-Typ e:texc/html;charser=utf-SCache-Co n tro l:p rivate5e

30、c-Co ak ie:3DSTZR TM=4;p ath=/S er-Co o k ie:H_PS _PS31D=2 42E_2362_1466_194 5_17S E_22 4 9_2260_22 51;pa.zh=/:do rcain=.baidu.co mS et-Co ak ie:3AIDCn D=5339D8D917E8 5C3DEAE0DAF9637A3E9A:exp 3.re3=Tue,14-May-43 36:10:01 GMT;p arh=/;do in axn=.baidu.co mExp ires:Tue,14 May 2013 06:10:01 GMTP3P:CF=OT

31、I DS F COR 工VA OU R IN D COM”Co n n ectio n:Clo se下面来说一说urllib2中的两个重要概念:Openers和Handlers。l.Openers:当你获取一个 URL 你使用一T opener(urllib2.OpenerDirector的实例)。正常情况下,我们使用默认opener:通过urlopeno但你能够创建个性的openers。2.Handles:17Openers使用处理器handlers所有的“繁重工作由handlers处理。每个handlers知道如何通过特定协议打开URLs,或者如何处理URL 打开时的各个方面。例如HTTP

32、重定向或者HTTP cookieso如果你希望用特定处理器获取URLs你会想创建一个openers,例如获 取一个能处理cookie的opener,或者获取一个不重定向的opener。要创建一opener,可以实例化一OpenerDirector,然后调用.add_handler(some_handler_instance)。同样,可以使用build_opener,这是一个更加方便的函数,用来创建 opener对象,他只需要一次函数调用。build_opener默认添加几个处理器,但提供快捷的方法来添加或更新 默认处理器。其他的处理器handlers你或许会希望处理代理,验证,和其他常用但 有

33、点特殊的情况。install_opener用来创建(全局)默认opener。这个表示调用urlopen 将使用你安装的opener。Opener对象有一个open方法。该方法可以像urlopen函数那样直接用来获取urls:通常不必调用 install_opener,除了为了方便。说完了上面两个内容,下面我们来看一下基本认证的内容,这里会用到 上面提及的Opener和HandleroBasic Authentication 基本验证18为了展示创建和安装一个handler,我们将使用HTTPBasicAuthHandler0当需要基础验证时,服务器发送一个header(401错误码)请求验证。

34、这个指定了 scheme和一个realm,看起来像这样:Www-authenticate:SCHEME realm=REALM.例如Www-authenticate:Basic realm=cPanel Users客户端必须使用新的请求,并在请求头里包含正确的姓名和密码。这是基础验证,为了简化这个过程,我们可以创建一个HTTPBasicAuthHandler 的实例,并让 opener 使用这个 handler就 可以啦。HTTPBasicAuthHandler使用一个密码管理的对象来处理URLs和 realms来映射用户名和密码。如果你知道realm(从服务器发送来的头里)是什么,你就能使用

35、H TT P Pa s swo rd M g ro通常人们不关心realm是什么。那样的话,就能用方便的HTTPPasswordMgrWithDefaultRealmo这个将在你为URL指定一个默认的用户名和密码。这将在你为特定realm提供一个其他组合时得到提供。我们通过给realm参数指定None提供给add_password来指示这种 情况。19最高层次的URL是第一个要求验证的URL。你传给.add_password()更深层次的URLs将同样合适。说了这么多废话,下面来用一个例子演示一下上面说到的内容。我们建一个urllib2_testl2.py来测试一下info的应用:python

36、 view Dl aincoDV1.2.34.h6.7.891011.#coding:utf-8import url l ib2#创建一个密码管理者password_mgr=url l ib2.HTTPPasswordMgrWithDefaul tReal m()#添加用户名和密码top_l evel _url=http:/exampl m,我们可以使用他代替None.12.#password_mgr.add_password(NoneJ top_l evel _url username,password)13.password_mgr.add_password(None_,top_l eve

37、l _url why1 1223)14.15.#创建了一个新的handl er16.handl er=url l ib2.HTTPBasicAuthHandl er(password_mgr)j l 7.18.#创建opener(OpenerDirector 实例)19.opener=url l ib2.buil d_opener(handl er)120.121.a_url=1 http:/ opener 获取一个 URL24.opener.open(a_url)卜5.26.#安装 opener.27.#现在所有调用url l ib2.url open将用我们的opener.28.url l

38、 ib2.instal l _opener(opener)29 30.注意:以上的例子我们仅仅提供我们的HHTPBasicAuthHandler给 build_openero20默认的 openers 有正常状况的 handlers:ProxyHandler,UnknownHandler,HTTPHandler,HTTPDefaultErrorHandler,HTTPRedirectHandler,FTPHandler,FileHandler,HTTPErrorProcessoro代码中的top_level_url实际上可以是完整URL(包含http:,以及主 机名及可选的端口号)。例如:ht

39、tp:/ or :8080。后者包含了端口号。Python网络爬虫(五):urilib2的使用细节与抓站技巧前面说到了 urllib2的简单入门,下面整理了一部分urllib2的使用细节。1.Proxy的设置urllib2默认会使用环境变量http_proxy来设置HTTP Proxyo 如果想在程序中明确控制Proxy而不受环境变量的影响,可以使用代 理。新建testl4来实现一个简单的代理Demo:python view Dl aincopy1.import url l ib22.enabl e_proxy=True|3.proxy_handl er=url l ib2.ProxyHand

40、l er(http:http:/some-:8080)4.nul l _proxy_handl er=url l ib2.ProxyHandl er()p.if enabl e_proxy:I 6.opener=url l ib2.buil d_opener(proxy_handl er)|7.el se:8.opener=url l ib2.buil d_opener(nul l _proxy_handl er)219.url l ib2.instal l _opener(opener)这里要注意的一个细节,使用urllib2.install_opener()会设置urllib2 的全局op

41、ener。这样后面的使用会很方便,但不能做更细致的控制,比如想在程序中使 用两个不同的Proxy设置等。比较好的做法是不使用install opener去更改全局的设置,而只是直 接调用opener的open方法代替全局的urlopen方法。2.Timeout 设置在老版Python中(Python2.6前),urllib2的API并没有暴露 Timeout的设置,要设置Timeout值,只能更改Socket的全局 Timeout 值。python view Dl aincopy1.import url l ib22.import socket3.socket.setdefaul ttimeo

42、ut(10)#10 秒钟后超时4.url l ib2.socket.setdefaul ttimeout(10)#另一种方式在 Python 2.6 以后,超时可以通过 urllib2.urlopen()的 timeout 参数直接设置。python view pl aincouv1.import url l ib22.response=url l ib2.url open(,timeout=10)http:/www.googl 3.在HTTP Request中力口入牛寺定的Header要加入header,需要使用Request对象:python view Dl aincopy1.import

43、 url l ib2222.request=url l ib2.Request(1)http:/ fake-cl ient1)4.response=url l ib2.url open(request)5 print response.read()对有些header要特别留意,服务器会针对这些header做检查 User-Agent:有些服务器或Proxy会通过该值来判断是否是浏览器 发出的请求Content-Type:在使用REST接口时,服务器会检查该值,用来确定 HTTP Body中的内容该怎样解析。常见的取值有:application/xml:在 XML RPC,如 RESTful/S

44、OAP 调用时使用 application/json:在 JSON RPC 调用时使用 application/x-www-form-urlencoded:浏览器提交 Web 表单时 使用在使用服务器提供的RESTful或SOAP服务时,Content-Type设 置错误会导致服务器拒绝服务4.Redirecturllib2默认情况下会针对HTTP 3XX返回码自动进行redirect动 作,无需人工配置。要检测是否发生了 redirect动作,只要检查一下 Response的URL和Request的URL是否一致就可以了。python view Dl aincopy1.import url

45、l ib22.my_url=1 3 response=url l ib2.url open(my_url)|4.redirected=response.geturl()=my_urlhttp:/www.googl 15.print redirected 6.7.my_url=1 http:/ UZuP18.response=url l ib2.url open(my_url)239.redirected=response.geturl()=my_url10.print redirected如果不想自动redirect,除了使用更低层次的httplib库之外,还可 以自定义 HTTPRedire

46、ctHandler 类。python view Dl aincoDV1.import url l ib22.cl ass RedirectHandl er(url l ib2.HTTPRedirectHandl er):3.def http_error_301(sel f,req,fp,code,msg,headers):4.print 3015.pass6.def http_error_302(sel f,req,fp,code,msg,headers):7.print 3038.pass9.10.opener=url l ib2.buil d_opener(RedirectHandl er

47、)11.opener.open(ttp)/ UZuP5.Cookieurllib2对Cookie的处理也是自动的。如果需要得到某个Cookie项的值,可以这么做:python view Dl aincoDV1.import url l ib22.import cookiel ib3.cookie=cookiel ib.CookieDar()4.opener=url l ib2.buil d_opener(url l ib2.HTTPCookieProcessor(cookie)5 response=opener.open(http:/1)6.for item in cookie:7.print

48、 1 Name=*+item.name8.print 1 Val ue=+item.val ue运行之后就会输出访问百度的Cookie值:24N ame=BAIDCTIDValue=6F3A3790249CDB35175F05DB33E399S:F=RESTART=send:GET/HTTP/1.lrnAccept-Enccxiing:identxtyXrXnHost:www.google.ccmrnCo nnectxon:closernUser-Agent:Fython-urlllb/2,7rnrn,reply:HTTP/1.1 302 Foundrnheader:Location:hctp

49、:/www.google,ccm.hk/url?sa=p&hl=zh-CN&pref=hkredzrectpva:/www.google.ccm.hk/&ust=1362520013637696&u5g=AFQjCNGXr4R3CJf7hn6PAsS7UgX17AqX_Qheader:Cache-Conrrol:privateheader:Conrenr-Type:cexc/hcml;charseE=UTF-8header:Set-Cookie:PREF=ID=f72cff61912dS35S:FF=O:W=1:71-1=1362 519983:LM=13625199S3:S=fTQHGF13

50、WlmI4v-_;expires=Thu/14-May-201S 08:26:23 GMT;parh=/;dcmam=.go ogle ccn|header:Date:Tue,14 May 2013 08:26:23 GMTheader:Server:gwsheader:Contenr-Lengrh:376header:X-XSS-Pxotectxon:1;n:cde=blockheader:X-Frame-Options:SAI-IEORIGIN header:Connection:closesend:GET/url?sa=p&hl=zh-CN&pref=hkredxrectpval=sye

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服