得到的就是我们想要的html的网页了,怎么样,简单吧。 下面来介绍一下这个urlopen方法和其中应用的参数。...,初始化中包括请求需要的各种参数: url,data和上面urlopen中的提到的一样。...URLError类初始化定义了reason参数,意味着当使用URLError类的对象时,可以查看错误的reason。...当使用HTTPError类的对象时,可以查看状态码,headers等。 下面我们用一个例子来看一下如何使用这两个exception类。...以上代码使用了try..exception的结构,实现了简单的网页爬取,当有异常时,如URLError发生时,就会返回reason,或者HTTPError发生错误时就会返回code。
下面来介绍一下这个urlopen方法和其中应用的参数。 urlopen defurlopen(url, data=None, timeout=socket....URLError类初始化定义了reason参数,意味着当使用URLError类的对象时,可以查看错误的reason。...=fp self.filename=url HTTPError是URLError的子类,当HTTP发生错误将举出HTTPError。...当使用HTTPError类的对象时,可以查看状态码,headers等。 下面我们用一个例子来看一下如何使用这两个exception类。...以上代码使用了try..exception的结构,实现了简单的网页爬取,当有异常时,如URLError发生时,就会返回reason,或者HTTPError发生错误时就会返回code。
目前使用data的HTTP请求是唯一的。当请求含有data参数时,HTTP的请求为POST,而不是GET。...url=response.geturl() 5 info=response.info() 6 code=response.getcode() 当不能处理一个response时,urlopen抛出一个...URLError——handlers当运行出现问题时(通常是因为没有网络连接也就是没有路由到指定的服务器,或在指定的服务器不存在),抛出这个异常.它是IOError的子类.这个抛出的异常包括一个‘reason...当一个错误被抛出的时候,服务器返回一个HTTP错误代码和一个错误页。你可以使用返回的HTTP错误示例。...具体错误码的说明看附录。 写到这上面多次提到了重定向,也说了重定向是如何判断的,并且程序对于重定向时默认处理的。
error: 异常处理模块,如果出现请求错误, 可以捕获这些异常,然后进行重试或其它操作以保证程序不会意外终止。 parse: 工具模块,提供了许多 URL 处理方法,比如拆分、解析,合并等。...这里只用了两行代码,便完成了百度首页的抓取,显示了网页的源代码,得到了源代码之后呢?想要的链接,图片地址,文本信息就可以从中提取出来。...注释:上面传递了一个字典,键为test,值为hello wrod,传递过程中需要被转码为bytes(字节流)类型,类型转换用到了bytes()方法,该方法的第一个参数需是str(字符串)类型,而上面传的是一个字典类型...如果是字典,先用urllib.parse模块里的urlencode()编码 第三个参数 headers 是一个字典,它就是请求头, 在构造请求时通过 headers 参数直接构造,也可以通过调用请求实例的...注释:通过4个参数构造了一个请求,其中url即请求URL,headers中指定了User-Agent和Host,参数data用urloncode()和bytes()方法转成字节流,还指定了请求的方式为POST
1) print(response.read().decode('utf-8')) 1.3 使用 data 参数提交数据 在请求某些网页时需要携带一些数据,我们就需要使用到 data 参数。...但这几个简单的参数并不足以构建一个完整的请求,如果请求中需要加入headers(请求头)、指定请求方式等信息,我们就可以利用更强大的Request类来构建一个请求。...data 参数跟 urlopen() 中的 data 参数用法相同。 headers 参数是指定发起的 HTTP 请求的头部信息。headers 是一个字典。...我使用的 User-Agent 是 Chrome 浏览器。...值得注意的是,install_opener 实例化会得到一个全局的 OpenerDirector 对象。
在这个函数体中,根据 start_requests (默认为GET请求)返回的 Response,得到了一个 名字为‘item_urls’ 的url集合。 然后遍历并请求这些集合。...method: 一般不需要指定,使用默认GET方法请求即可 headers: 请求时,包含的头文件。一般不需要。...Default to False. errback: 指定错误处理函数 不出意外的话,接下来就是 Response 的源码: # 部分代码 class Response(object_ref):..., meta={'item': item}) 接收到第一个函数得到并遍历的所有url的请求响应Response。...('item', None) # 当 'item' key 不存在 meta字典中时,返回None 然后在在本页中使用 xpath,css,re等来选择详细的字段,至于具体的选择,以后再说吧~~
在这里我们看到,当我们输入urllib.request.urlopen('http://baidu.com')时,我们会得到一大长串的文本,也就是我们将要从这个得到的文本里得到我们所需要的数据。 ...=url , data = data , headers = headers , method = 'POST') response = request.urlopen(req) print(...怎么进行拆分,如果我们得到了URl的集合,例如这样dada = ['http','www.baidu.com','index.html','user','a=6','comment'] 我们可以使用urlunparse...如果我们的有了一个字典类型的参数,和一个url,我们想发起get请求(上一期说过get请求传参),我们可以这样来做, 在这里我们需要注意的是,url地址后面需要自行加一个‘?’。...最后还有一个urllib.robotparser,主要用robot.txt文件的官网有一些示例,由于这个不常用,在这里我做过多解释。
首先,推荐两个关于python爬虫不错的博客:Python爬虫入门教程专栏 和 Python爬虫学习系列教程 。写的都非常不错,我学习到了很多东西!在此,我就我看到的学到的进行总结一下! ...第一个参数为url,第二个为要发送的数据,第三个是超时时间。...传入url之后,我们得到一个response对象,返回的信息就在这里面!通过response.read()获取里面的内容。...同样的我们可以构造一个Request类,作为参数传入urlopen中,这个Request类中就包含url,data,timeout等内容。...在访问网站的情况下我们可能会遇到一些网站错误,我们要在程序中进行处理(一如既往的try... except...得到错误信息内容): 1 import urllib2 2 3 req = urllib2
第二个 error 模块即异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作保证程序不会意外终止。...Request 由上我们知道利用 urlopen() 方法可以实现最基本请求的发起,但这几个简单的参数并不足以构建一个完整的请求,如果请求中需要加入 Headers 等信息,我们就可以利用更强大的 Request...=None, unverifiable=False, method=None) 第一个 url 参数是请求 URL,这个是必传参数,其他的都是可选参数。...第三个 headers 参数是一个字典,这个就是 Request Headers 了,你可以在构造 Request 时通过 headers 参数直接构造,也可以通过调用 Request 实例的 add_header...).decode('utf-8')) 在这里我们通过四个参数构造了一个 Request,url 即请求 URL,在headers 中指定了 User-Agent 和 Host,传递的参数 data 用了
a url 中文意思就是:urllib2.urlopen可以接受一个Request对象或者url,(在接受Request对象时候,并以此可以来设置一个URL 的headers),urllib.urlopen...当请求 含有data参数时,HTTP的请求为POST,而不是GET。数据应该是缓存在一个标准的application/x-www-form- urlencoded格式中。...当获取一个URL时,可以使用一 个opener(一个urllib2.OpenerDirector实例对象,可以由build_opener实例化生成)。...getcode() — 返回响应的HTTP状态代码,运行下面代码可以得到code=200 当不能处理一个response时,urlopen抛出一个URLError(对于python APIs,内建异常如...URLError——handlers当运行出现问题时(通常是因为没有网络连接也就是没有路由到指定的服务器,或在指定的服务器不存在) HTTPError——HTTPError是URLError的子类。
8888/loginl')#请求的网址 except error.HTTPError as e: print(e.reason,e.code,e.headers,sep='\n')#分别打印reason...)和状态码(code)以及请求头(headers).关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符,这里就是打印里的每一个都对应一个换行,看结果图就知道了。...上面我们用到HTTPError,他是URLError的子类,现在我把子类和父类加进来: from urllib import request,error try: response=request.urlopen...HTTP请求错误的,如果不是这个错误,那就看看是不是有别的错误,就打印整个URL报错信息,当然URL没报错那就是请求正确。...大家可以换不同的网址进行测试,我是专门选的一个不能请求的网址,把这样的代码当作一个模板记住,其实没啥技巧。
urllib.request这个模块用得比较多, 尤其是urlopen函数,会返回一个二进制的对象,对这个对象进行read()操作可以得到一个包含网页的二进制字符串,然后用decode()解码成一段html...当request的方式是post时,使用参数data,用于填写传递的表单信息,将data填好表单信息,准备传入urlopen 前,还需要利用urllib.parse里的urlencode()函数转换格式...而urllib.request的Request函数,也可以用于打开url字符串,同时可以传入更多的参数,例如:headers,Request函数可以返回一个request对象作为urlopen函数的url...headers参数是一个字典,服务器对于用户发出的request,会通过其中的headers信息来判断用户发信息,我们可以通过自己编写headers传入urllib.request....打开一个url后会返回一个HttpResponse对象,这个对象有以下几个常用的方法: read() 次方法用来读取url的html内容,格式为二进制 geturl() 用来获取urlopen的url参数
; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' } # 因为参数顺序的问题,需要关键字传参...Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。 Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。...,参数是拼接到url后面,编码之后不需要调用encode方法 post请求方式的参数必须编码,参数是放在请求对象定制的方法中,编码之后需要调用encode方法 import urllib.request...http错误:http错误是针对浏览器无法连接到服务器而增加出来的错误提示。...提高访问速度 扩展:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。
1.1、urllib.request.urlopen urlopen函数创建一个指定url或者被封装request的对象,以此为出发点获取数据流,并操作数据 urlopen的函数格式 urllib.request.urlopen...=url,data =data,headers=headers,method="POST") response = request.urlopen(req) print(response.read()....所以,在这里我们就用到了比调用urlopen()的对象更普通的对象,也就是Opener。 1.5、cookie 网站使用Cookie保存用户的浏览信息,如会话ID,上次访问的状态等。...不仅如此,我们或得的response非常强大,可以直接得到很多信息,并且response中的内容不是一次性的,requests自动将响应的内容read出来,保存在text变量中,你想读取多少次就读多少次...这里我们采用另一种转换的方法:先将得到的form dict 转换为 unicode字符串(注意其中的ensure_ascii=False参数,它的含义是不对unicode字符转义),然后将得到的unicode
当请求超时,我们可以采取进一步措施,例如选择直接丢弃该请求或者再请求一次。 ? 1.3 使用 data 参数提交数据 在请求某些网页时需要携带一些数据,我们就需要使用到 data 参数。 ?...但这几个简单的参数并不足以构建一个完整的请求,如果请求中需要加入headers(请求头)、指定请求方式等信息,我们就可以利用更强大的Request类来构建一个请求。...按照国际惯例,先看下 Request 的构造方法: ? url 参数是请求链接,这个是必传参数,其他的都是可选参数。 data 参数跟 urlopen() 中的 data 参数用法相同。...headers 参数是指定发起的 HTTP 请求的头部信息。headers 是一个字典。...值得注意的是,install_opener 实例化会得到一个全局的 OpenerDirector 对象。
/g/300/300") #urlopen返回一个对象 cat_img = response.read() #对象均可用print()打印出来 # response.geturl() 得到url...urlopen的url参数既可以是字符串也可以是一个request对象,则我们还可以将代码写成如下形式: import urllib.request req = urllib.request.Request...当data未赋值时,是以GET的方式提交,当data赋值后,POST将会取代GET将数据提交。...4 异常处理 (1)URLError 当urlopen无法处理一个响应的时候,就会引发URLError异常。 通常,没有网络连接或者对方服务器压根儿不存在的情况下,就会引发这个异常。...同时,这个URLError会伴随一个reason属性,用于包含一个由错误编码和错误信息组成的元组。
error:异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作以保证程序不会意外终止。...urlopen 方法来发送这个请求,只不过这次该方法的参数不再是 URL,而是一个 Request 类型的对象。...第三个参数 headers 是一个字典,它就是请求头,我们可以在构造请求时通过 headers 参数直接构造,也可以通过调用请求实例的 add_header() 方法添加。...要转化为 URL 的参数时,只需要调用该方法即可。 7. parse_qs 有了序列化,必然就有反序列化。...当搜索爬虫访问一个站点时,它首先会检查这个站点根目录下是否存在 robots.txt 文件,如果存在,搜索爬虫会根据其中定义的爬取范围来爬取。
": "http://httpbin.org/post" } 通过返回的内容可以返现包含了User-Agent数据,这是因为浏览器发起请求时都会有请求头header,但urlopen无法添加其他参数,这会让服务器识别出我们是一个爬虫...当有异常发生时,需要利用python的异常控制机制,也就是使用try…except语句来捕获异常进行处理,否则程序就会异常退出。...在使用try…except时,except子句一般会加上错误类型,以便针对不同的错误类型采取相应的措施。..., reason,headers适用于处理特殊 HTTP 错误例如作为认证请求的时候。... 在爬取过程中,当获得一个URL时,如果想把这个URL中的各个组成部分分解后使用,那么就要用到url.parse()和url.split()。
data 参数跟 urlopen() 中的 data 参数用法相同。 headers 参数是指定发起的 HTTP 请求的头部信息。headers 是一个字典。...所以遇到一些验证User-Agent的网站时,我们需要自定义Headers,而这需要借助于urllib.request中的Request对象。...值得注意的是,install_opener实例化会得到一个全局的 OpenerDirector 对象。 1、使用代理 有些网站做了浏览频率限制。如果我们请求该网站频率过高。...而我们有时候又有将中文字符加入到url中的需求,例如百度的搜索地址: https://www.baidu.com/s?wd=周杰伦 ?之后的wd参数,则是我们搜索的关键词。...parse.unquote('%E5%91%A8%E6%9D%B0%E4%BC%A6') '周杰伦' urllib.parse.urlencode 在访问url时,我们常常需要传递很多的url参数,而如果用字符串的方法去拼接
比如电视你只用看,不用知道他是如何成像的。 urllib库之request(用来模拟HTTP请求)模块 request的第一个方法urlopen() 我们以淘宝为例写上这样一段代码: ?...那我怎么知道他是干什么的呢?help()一下就知道。 接下来我们来说一下urlopen()方法的参数: 我们利用上面说的去看一下有什么参数: ? 得到如下结果: ? 卧槽?怎么全英文???...url,data和上面的一样,headers表示请求头,是一个字典,我们在爬取网站的时候通常会加上一个User-Agent参数,防止被识别为爬虫,修改它,伪装成浏览器。...reason:返回错误原因 code:返回状态码 headers:返回请求头信息 这里只针对爬虫用到的来说一下。...当url中有汉字时我们需要转化成url的编码格式quote()转化回来unquote() ? 结果: ?
领取专属 10元无门槛券
手把手带您无忧上云