附:Python中urllib库的使用

简介: 函数是用于读取网页的内容,我们可以指定读取的长度。

今天让我们一起走进python爬虫中urllib库的世界吧!!


(一)urllib库中的模块

urllib库中包含四个常用的模块他们分别是:


1. urllib.request

用于打开和读取URL

2. urllib.error

包含urllib.request抛出的异常

3. urllib.parse

用于解析URL

4. urllib.robotparser

解析robot.txt文件


(二)Urllib.request 模块

urllib.request 定义了一些打开 URL 的函数和类,包含授权验证、重定向、浏览器 cookies等。

urllib.request 可以模拟浏览器的一个请求发起过程。

我们可以使用 urllib.request 的 urlopen 方法来打开一个 URL,语法格式如下:


image.png


 url:url 地址。

data:发送到服务器的其他数据对象,默认为 None。

timeout:设置访问超时时间。

cafilecapath:cafile 为 CA 证书, capath 为 CA 证书的路径,使用 HTTPS 需要用 到。

实例:

from urllib.request import urlopen
URL = urlopen("https://www.baidu.com/")
print(URL.read())

运行结果:


image.png


上述代码用urlopen打开百度的URL,然后使用read()函数来获取网页的HTML实体代码。

read()函数是用于读取网页的内容,我们可以指定读取的长度。

例:print(URL.read(200))

除了read()函数外,同时还包含以下两个读取网页内容的函数:


readline() #读取一行内容

readlines() #读取文件的全部内容,他会把读取的内容赋值给一个列表变量。实例代码以及运行结果如下:

from urllib.request import urlopen
URL = urlopen("https://www.baidu.com/")
myURL = URL.readlines()
for i in myURL:
    print(i)

image.png除此之外还有urllib.request模块中Reqquest类的使用,通常我们利用这个类来模拟网页的头部信息。使用方法如下:


image.png


url:url 地址。

data:发送到服务器的其他数据对象,默认为 None。

headers:HTTP 请求的头部信息,字典格式。

origin_req_host:请求的主机地址,IP 或域名。

unverifiable:很少用整个参数,用于设置网页是否需要验证,默认是False.

method:请求方法, 如 GET、POST、DELETE、PUT等。


(三)Urllib.error 模块

urllib.error 模块为 urllib.request 所引发的异常定义了异常类,基础异常类是 URLError。urllib.error 包含了两个方法,URLErrorHTTPError

URLError 是 OSError 的一个子类,用于处理程序在遇到问题时会引发此异常(或其派生的异常)。

HTTPError 是 URLError 的一个子类,用于处理特殊 HTTP 错误例如作为认证请求的时候,包含的属性 code 为 HTTP 的状态码, reason 为引发异常的原因,headers  为导致 HTTPError 的特定 HTTP 请求的 HTTP 响应头。


我们使用 getcode() 函数来获取网页状态码。

对不存在的网页抓取并处理异常。eg:返回200说明网页正常,返回404则说明网页不存在。

实例如下:

from urllib.request import urlopen
import urllib.request
URL1 = urlopen("https://www.baidu.com/")
print(URL1.getcode())
try:
    URL2 = urlopen("https://www.baidu.com/1")
except urllib.error.HTTPError as a:
    if a.code == 404:
        print(404)


运行结果:

image.png

(四)Urllib.parse 模块

urllib.parse 用于解析 URL,格式如下:image.png使用urllib.parse可以解析出URl的内容是一个元组,包含 6 个字符串:协议(scheme),位置(netloc),路径(path),参数(params),查询(query),判断(fragment)。image.png

(五) Urllib.robotparser 模块

urllib.robotparser 用于解析 robots.txt 文件。


robots.txt是一种存放于网站根目录下的 robots 协议,它通常用于告诉搜索引擎对网站的抓取规则。


文中还有许多不足以及没有提到的点,再这里我们只做一个大概的了解,再后续的学习中我们再渐渐深入,感谢大家支持!


相关文章
|
4天前
|
人工智能 算法 Python
【随手记】python的heapq库的基本用法
【随手记】python的heapq库的基本用法
17 1
|
17小时前
|
数据采集 机器学习/深度学习 数据可视化
利用Python和Pandas库构建高效的数据分析流程
在数据驱动的时代,数据分析已成为企业决策的关键环节。本文介绍如何利用Python编程语言及其强大的数据分析库Pandas,构建一套高效且可扩展的数据分析流程。与常规的数据分析流程不同,本文不仅涵盖数据加载、清洗、转换等基础步骤,还强调数据可视化、模型探索与评估等高级分析技巧,并通过实际案例展示如何在Python中实现这些步骤,为数据分析师提供一套完整的数据分析解决方案。
|
2天前
|
开发框架 Python
Python的`pygame`库用于2D游戏开发,涵盖图形、音频和输入处理。
【6月更文挑战第21天】Python的`pygame`库用于2D游戏开发,涵盖图形、音频和输入处理。要开始,先通过`pip install pygame`安装。基本流程包括:初始化窗口、处理事件循环、添加游戏元素(如玩家和敌人)、响应用户输入、更新游戏状态及结束条件。随着项目发展,可逐步增加复杂性。
6 1
|
4天前
|
Python
Python中使用os库管理环境变量
在Python中,可以使用os库来管理操作系统的环境变量。通过os.environ对象,我们可以获取、修改和删除环境变量的值。
11 3
|
3天前
|
存储 JSON JavaScript
Python教程:一文了解Python中的json库
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,易于人类阅读和编写,也易于计算机解析和生成。在Python中,JSON通常用于数据交换和存储,因为它与Python的字典和列表类型相似。
13 2
|
8天前
|
JSON 数据格式 Python
Python 的 requests 库是一个强大的 HTTP 客户端库,用于发送各种类型的 HTTP 请求
【6月更文挑战第15天】Python的requests库简化了HTTP请求。安装后,使用`requests.get()`发送GET请求,检查`status_code`为200表示成功。类似地,`requests.post()`用于POST请求,需提供JSON数据和`Content-Type`头。
34 6
|
4天前
|
API Python
Python库`openpyxl`是一个用于读取和写入Excel 2010 xlsx/xlsm/xltx/xltm文件的库。
【6月更文挑战第19天】`openpyxl`是Python处理xlsx文件的库,支持读写Excel 2010格式。使用`pip install openpyxl`安装。基本操作包括加载文件、读写单元格、操作行和列。例如,加载Excel后,可以读取单元格`A1`的值,或将“Hello, World!”写入`A1`。还可修改单元格内容,如加1后保存到新文件。更多功能,如样式和公式,见官方文档[1]。 [1]: <https://openpyxl.readthedocs.io/en/stable/>
23 1
|
4天前
|
开发工具 git Python
安装和使用`libnum`是一个用于数字理论函数的Python库
【6月更文挑战第19天】`libnum`是Python的数字理论函数库。安装可通过`git clone`,进入目录后运行`python setup.py install`,也可用`pip install libnum`。示例:使用`int_to_hex`将十进制数42转换为十六进制字符串'2a'。注意,信息可能已过时,应查最新文档以确保准确性。如遇问题,参考GitHub仓库或寻求社区帮助。
15 1
|
5天前
|
Python
NumPy 是 Python 的一个强大的科学计算库,它允许你创建各种类型的数组
【6月更文挑战第18天】**NumPy**是Python的科学计算库,用于创建和操作多维数组。常用数组生成方法包括:`np.array()`从列表转换为数组;`np.zeros()`生成全零矩阵;`np.ones()`创建全一矩阵;`np.linspace()`产生等差序列;`np.arange()`创建等差数列;以及`np.eye()`生成对角线为1的二维数组。更多方法可查阅NumPy官方文档。
14 2
|
4天前
|
Python
python项目依赖库打包发布方法
python项目依赖库打包发布方法
11 0