urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求。其常被用到的子模块在Python3中的为urllib.request和urllib.parse
接下来我们来具体了解一下urllib的使用方法
from urllib.request import urlopen,Request
from urllib.parse import quote,urlencode
#指定爬取的网页url
url = 'http://www.baidu.com/'
#通过urlopen函数向指定的url发起请求,返回响应对象
reponse =urlopen(url=url)
#通过调用响应对象中的read函数,返回响应回客户端的数据值(爬取到的数据)
info = reponse.read().decode() #返回的数据为byte类型,并非字符串
print(info)#打印显示爬取到的数据值
在上述案例中我们只使用了该函数中的第一个参数url。在日常开发中,我们能用的只有url和info这两个参数
url参数:指定向哪个url发起请求
info参数:可以将post请求中携带的参数封装成字典的形式传递给该参数
urlopen函数返回的响应对象,相关函数调用介绍:
response.headers():获取响应头信息
response.getcode():获取响应状态码
response.geturl():获取请求的url
response.read():获取响应中的数据值(字节类型)
下面我们来讲解一下如何将爬取到的信息保存,爬取到百度新闻首页的数据值写入文件进行存储
from urllib.request import urlopen,Request
from urllib.parse import quote,urlencode
url = 'http://news.baidu.com/'
reponse = urlopen(url=url)
#decode()作用是将响应中字节(byte)类型的数据值转成字符串类型
info = reponse.read().decode()
#使用IO操作将info表示的数据值以'w'权限的方式写入到news.txt文件中
with open('./news.txt','w') as rfile:
rfile.write(info)
print('写入文件完毕')
这里我们使用了with open的指令,我来介绍一下这个指令具体有哪些。
文件对象的常用方法:
方法名 说明
read([size]) 从文件中读取size个字节或字符的内容返回。若省略[size],则 读取到文件末尾,即一次读取文件所有内容
readline() 从文本文件中读取-行内容
readlines () 把文本文件中每一-行都作为独立的字符串对象,并将这些对象 放入列表返回.
write(str) 将字符串str内容写入文件
writelines(s_ list) 将字符串列表s list写入文本文件,不添加换行符
seek(offset [, whence])
把文件指针移动到新的位置,offset 表小相对于whence的位置:
offset:为正往结束方向移动,为负往开始方向移动
whence不同的值代表不同含义:
0:从文件头开始计算(默认值)
1:从当前位置开始计算
2:从文件尾开始计算
tell() 返回文件指针的当前位置
flush() 把缓冲区的内容写入文件,但不关闭文件
close() 把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源
在这里中我们最常用到的是write、close、read。分别是写入数据、关闭文件、读取数据。
下面再讲一下文件打开的模式:
‘r’ 以只读模式打开文件。
‘w’ 以只写方式打开文件,文件不存在则创建,文件存在则覆盖。 ‘a’以追加模式打开文件,文件不存在则创建,文件存在则尾部追加内容。
‘b’ 以二进制方式打开文件,不能单独使用应与,rb,或者wb一起使用。
‘+’ 以读写方式打开文件,不能单独使用,应与a+一起使用。
二进制文件:数据内容用‘字节’储存,无法用记事本打开,只能用专门的软件打开。如MP3音频文件、jpg图片、doc文档等。
看到这里我相信你对爬虫的使用应该是有一定的了解了吧,下一章我将一下如何使用动态UA。
喜欢的可以点赞加关注哦!