爬虫(一)urllib模块的使用与介绍

本文介绍了Python的urllib库在爬虫中的应用,包括urlopen函数的基本用法、参数解释,以及如何使用它获取网页内容并保存至文件。后续会涉及动态User-Agent的使用。
摘要由CSDN通过智能技术生成

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。

喜欢的可以点赞加关注哦!
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值