Python中使用urllib库抓取静态网页数据

目录

urllib库

模块名称

快速爬取网页

urlopen方法

urlopen中的参数

使用HTTPRsponse对象

构造Request对象


urllib库

是Python内置的HTTP请求库,它可以看做是处理URL的组件集合。

模块名称

urllib.request(请求模块)

urllib.error(异常处理模块)

urllib.parse(url解析模块)

urllib.robotparser(robots.txt解析模块)

快速爬取网页

import urllib.request
#调用urllib.request库的urlopen方法,并传入一个url
response=urllib.request.urlopen('http://www.baidu.com')
#使用read方法读取获取到的网页内容
html=response.read().decode('UTF-8')
#打印网页内容
print(html)

上述案例仅仅用了几行代码,就已经帮我们把百度的首页的全部代码下载下来了。

实际上,如果我们在浏览器上打开百度主页,右键选择“检查”,你会发现,跟我们刚才打印出来的是一模一样。

示例结果:

urlopen方法

前面在爬取网页时,有一句核心的爬虫代码:

response=urllib.request.urlopen('http://www.baidu.com')

上述代码调用的是urllib.request模块中的urlopen方法,它传入了一个百度首页的URL,使用的协议是HTTP,这是urlopen方法最简单的用法。

urlopen中的参数

urlopen方法可以接收多个参数,定义格式如下:

参数如下:

·url -- 表示目标资源在网站中的位置。

·data -- 用来指明向服务器发送请求的额外信息。

·timeout -- 该参数用于设置超时时间,单位是秒。

·context -- 实现SSL加密传输,该参数很少使用。

使用HTTPRsponse对象

使用urlopen方法发送HTTP请求后,服务器返回的响应内容封装在一个HTTPRsponse类型的对象中。

例如:

HTTPRsponse类属于http.client模块,该类提供了获取URL、状态码、响应内容等一系列方法。

·geturl() -- 用于获取响应内容的URL,该方法可以验证发送的HTTP请求是否被重新调配。

·info() -- 返回页面的元信息。

·getcode() -- 返回HTTP请求的响应状态码。

示例:

示例结果:

构造Request对象

如果希望对请求执行复杂操作,则需要创建一个Request对象来作为urlopen方法的参数。

#将url作为Request方法的参数,构造并返回一个Request对象
request=urllib.request.Request('http://www.baidu.com')
#将Request对象作为urlopen方法的参数,发送给服务器并接收响应
response=urllib.request.urlopen(request)

在使用urllib库发送URL的时候,我们推荐大家使用构造Request对象的方式。

在构建请求时,除了必须设置的url参数外,还可以加入很多内容,例如下面的参数:

·data -- 默认为空,该参数表示提交表单数据,同时HTTP请求方法将从默认的GET方式改为POST方式。

·headers -- 默认为空,该参数是一个字典类型,包含了需要发送的HTTP报头的键值对。

  • 42
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值