Scrapy学习笔记学习笔记-基本库的使用基本库的使用urllib
了解一下urllib库,它是Python内置的HTTP 请求库,也就是说不需要额外安装即可使用它,包含如下4 个模块。
发送请求发送请求
使用urllib的request模块,我们可以方便地实现请求的发送并得到响应。本节就来看下它的具体用法。
urlopen
urllib.request模块提供了最基本的构造HTTP请求的方法, 利用它可以模拟浏览器的一个请求发起过程, 同时它还带有处理授权验证授权验证( authenticaton )、重定向( redirection) 、浏浏
览器览器Cookies 以及其他内容。
利用最基本的urlopen方法,可以完成最基本的简单网页的GET请求抓取
import urllib.request
response = urllib.request.urlopen('https://www.python.org')
print(type(response))
print(response.read().decode('utf-8'))
response是一个HTTPResponse类型的对象,主要包含read、readinto、getheader、getheaders、fileno等方法,以及msg、version、status、reason、debuglevel、closed等属性。
调用read方法可以得到返回的网页内容,调用status 属性可以得到返回结果的状态码
前两个输出分别输出了响应的状态码和响应的头信息,最后一个输出通过调用getheader方法并传递一个参数Server 获取了响应头中的Server 值,结果是nginx ,意思是服务器是用
Nginx搭建的。
data 参数是可选的。如果要添加该参数,并且如果它是字节流编码格式的内容,即bytes类型,则需要通过bytes方法转化。另外,如果传递了这个参数,则它的请求方式就不再是不再是
GET 方式,而是方式,而是POST 方式方式。
传递了一个参数word ,值是hello o 它需要被转码成bytes (字节流)类型。其中转字节流采用了bytes方法,该方法的第一个参数需要是str (字符串)类型,需要用urllib.parse模块
里的urlencode方法来将参数字典转化为字符串;第二个参数指定编码格式,这里指定为utf8 。我们传递的参数州现在了form 字段中,这表明是模拟了表单提交的方式,以POST 方
式传输数据。
timeout参数用于设置超时时间,单位为秒,意思就是如果请求超出了设置的这个时间, 还没有得到响应, 就会抛出异常。如果不指定该参数,就会使用全局默认时间。它支持HTTP
, HTTPS 、FTP请求。
评论0
最新资源