Python urllib模块初识

502 阅读4分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。

前言

我们在上一期计算机网络知识中已经对计算网络相关的基础如TCP/IP 四层协议模型、URL资源定位符、HTTP/HTTPS协议等进行了解和学习。

众所周知,Python是一门高级语言,不仅支持GUI编程,还可以进行网络编程。

其中,Python 内置库提供用于操作URL的功能的urllib模块,对服务端进行请求库requests模块

因此,本期我们使用Python 爬虫使用最常用的模块urllib模块知识学习,Let's go~

1. urllib模块概述

⌨️urllib是python内置的HTTP请求库,无需安装即可使用。

urllib非常强大,提供支持许多功能如下

  1. 网页请求
  2. 响应获取
  3. 代理、cookie设置
  4. 异常处理
  5. URL解析

urllib提供包含了4个模块

  • request: 它是最基本的http请求模块,用来模拟发送请求

  • error: 异常处理模块,如果出现错误可以捕获这些异常

  • parse: 一个工具模块,提供了许多URL处理方法,如:拆分、解析、合并等

  • robotparser: 主要用来识别网站的robots.txt文件,然后判断哪些网站可以爬

🔔 重要说明

  • Python2中,可以直接导入urllib
  • Python3中,导入时需要指明导入的模块

2. urllib.request 模块相关方法

🎉 urllib.request 模块包含在各种情况下打开HTTP协议的URL的方法,如认证、重定向、cookie操作。

urllib.request 模块使用最多的场景是向服务器发送请求。

urllib.request 模块提供请求URL常用方法如下:

方法作用
urllib.request.urlopen(url,data)打开url,url可以是字符或者request对象
urllib.request.build_opener()将函数串联起来并返回OpenerDirector
urllib.request.Request(url,data)将data数据发送给服务器
urllib.request.HTTPBasicAuthHandler()处理远程主机的身份认证
urllib.request.ProxyHandler(proxies)使用指定的代理

📣重点说明

urllib.request 模块常用使用步骤如下:

  1. 导入模块:import urllib. request
  2. 文件管理器with进行读取网页里的内容
import urllib.request

req = urllib.request.urlopen("https://juejin.cn/user/211521683863847/posts")

with req as f:

    print(f.read(300).decode('utf-8'))

3. urllib.parse 模块相关方法

🎉 urllib.parse 模块用于解析URL,将URL字符串拆分成协议、网络位置、路径等各个部分

urllib.parse 模块也可以将各个部分组成URL字符串,将相对的url转换成完整的绝对的URL地址

urllib.parse 模块定义方法URL解析和URL转码两部分。

urllib.parse 关于解析URL方法如下:

方法作用
urllib.parse.urlparse(urlstring)url解析成六部分scheme://netloc/path;parameters?query#fragment
urllib.parse.parse_qs(qs)解析以字符串参数形式(application/x-www-form-urlencoded)给出查询字符串
urllib.parse.urlnparse(parts)以元组形式返回构造的URL
urllib.parse.urlsplit(urlstring)解析url,并返回元组形式通过索引可查询url参数
urllib.parse.urljoin(base,url)通过base和url来组合成完整的url
urllib.parse.urldefrag(url)会返回一个不包含片段标识符url

urllib.parse 关于转码URL方法如下:

方法作用
urllib.parse.quote(string)使用%xx转义符替换string中特殊的字符
urllib.parse.urldecod(query)将字符串转换成编码的ASCII文本字符串

urllib.parse 解析url字段说明:

属性说明
schemaURL协议
netloc网络位置
path分层路径
query查询组件
fragment片段标识符
username用户名
password密码
hostname主机名(小写)
post端口号

📣举例说明

import urllib.parse

pa = urllib.parse.urlparse("https://juejin.cn/user/211521683863847/posts")

print("协议:",pa.scheme)
print("网络位置:",pa.netloc)
print("分层路径:",pa.path)

4. urllib.error 模块相关方法

🎉urllib.error 模块专门处理 urllib.request 引发的异常类的场景

urllib.error 主要提供两个HTTPError和URLError

方法作用
urllib.error.HTTPError处理HTTP错误引发的异常
urllib.error.URLError处理程序在遇到问题时引发的异常

📣重要说明

  • HTTPError 是 URLError的子类,专门处理HTTP协议错误的异常
  • URLError 是 OSError的一个子类,包含reason为引发异常的原因

5. urllib.robotparser 模块相关方法

🎉urllib.robotparser 专门用来解析robots.txt 文件的网站抓取特定URL的问题

作用
urllib.robotparser.RobotFileParse(url)提供一系列读取、解析和回答url的问题方法
方法作用
set_url(url)设置指向 robots.txt 文件的 URL
read()读取 robots.txt URL 并将其输入解析器。
parse()解析行参数。
can_fetch()如果允许 useragent 按照被解析 robots.txt 文件中的规则来获取 url 则返回 True

总结

本期,我们对urllib库中提供的四个模块urllib.request、urllib.parse、urllib.error、urllib.robotparser相关的方法进行初步认识和使用。

以上是本期内容,欢迎大佬们点赞评论ღ( ´・ᴗ・` )比心,下次见~💖💗💓