Python爬虫——urllib的基本使用

226 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

1、使用urllib获取网站首页的源码

urllib 模块

urllib 是Python3的内置模块,该模块能实现基本的网页爬取,基本上涵盖了基础的网络请求功能。

urllib 库有四个模块:urllib.request,urllib.error,urllib.parse,urllib.robotparser

  • urllib.request:发送http请求

  • urllib.error:处理请求过程中,出现的异常。

  • urllib.parse:解析url

  • urllib.robotparser:解析robots.txt 文件

使用实例:

#导包,发起请求使用urllib库的request请求模块
import urllib.request

#定义url
url = 'http://www.baidu.com'

#构建request请求
request = urllib.Request(url)

#向URL发请求,返回响应对象response,response是HTTPResponse的类型
response = request.urlopen(url)
print(response)

#  response.read() 返回首页源码字节类型的数据
#解码 decode('utf-8')将字节类型数据转换为字符串,指定编码格式'utf-8'
#编码 encode('utf-8')将字符串数据转换为字节类型
html = response.read().decode('utf-8')
print(html)

执行结果,由于篇幅过长,只简单显示一下:

在这里插入图片描述

2、常用方法

urlopen()方法:向网站发起请求并获取html响应对象

使用语法:

urlopen(url, data, timeout)

参数说明:

  • url:URL请求地址,

  • data:访问URL时要传送的数据,

  • timeout:设置请求超时时间。

其中url参数必填,data和timeout参数是非必填的,

data参数默认为空None,timeout参数默认为 socket._GLOBAL_DEFAULT_TIMEOUT(全局默认超时)

Request()方法:用于创建请求对象、包装请求头

使用语法:

urllib2.request.Request(url,headers)

参数说明如下:

  • url:请求的URL地址。
  • headers:重构请求头。

使用实例:

#导包
import urllib2
#定义url
url = 'http://www.baidu.com'
#构建request请求
request = urllib.Request(url)
response =request.urlopen(url)

response响应对象中的常用方法

read()方法:以字节类型返回获取到的网页内容,可以指定读取多少个字节

decode()方法:解码,将字节类型转换为字符串类型

geturl()方法:返回响应对象的URL地址

getcode()方法:返回请求时的HTTP状态码

getheaders():获取响应的状态信息

使用实例:

import urllib.request

url = 'http://www.baidu.com'
response = urllib.request.urlopen(url)
print(response.geturl())
print(response.getcode())

执行结果:

http://www.baidu.com
200