python ---->>利用 urllib 库获取网络资源

news2024/11/22 19:26:43

我的个人博客主页:如果’'真能转义1️⃣说1️⃣的博客主页
(1)关于Python基本语法学习---->可以参考我的这篇博客《我在VScode学Python》
(2)pip是必须的在我们学习python这门语言的过程中Python ---->> PiP 的重要性

Python urllib 库是用于操作网页 URL,并对网页的内容进行抓取处理。

利用 urllib 库获取网络资源

  • url是什么
    • 主要包含的模块:
    • 【1】urllib.request(请求模块) ---> 用于打开 URL 的可扩展库
      • (1)urllib.request.urlopen
        • 函数原型
        • 例子:
      • (2)urllib.request.urlretrieve --->该函数检索指定URL的内容并将其保存到本地文件中。
        • 例子
    • 【2】- urllib.error(异常处理模块):该模块定义了由urllib.request引发的异常类。
    • 【3】urllib.parse(url解析模块):该模块定义了将URL解析为其组成部分的函数,以及将URL组件组合成完整URL的函数。
    • 【4】 urllib.robotparser(robots.txt解析模块):该模块提供了一个单一的类RobotFileParser,用于回答特定用户代理是否被允许在发布robots.txt文件的网站上获取URL。
  • 利用 urllib 库获取网络资源

urllib是Python的一个模块,提供了一系列用于处理URL的模块。它可以用于发送HTTP请求 1、处理cookie以及处理web sockets等任务。

url是什么

在这里插入图片描述
URL(外文名:Uniform Resource Locator,中文名:统一资源定位符),统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址。

主要包含的模块:

在这里插入图片描述

  • urllib.request(请求模块):该模块定义了帮助在复杂世界中打开URL(主要是HTTP)的函数和类——基本和摘要身份验证、重定向、cookie等。

  • urllib.error(异常处理模块):该模块定义了由urllib.request引发的异常类。

  • urllib.parse(url解析模块):该模块定义了将URL解析为其组成部分的函数,以及将URL组件组合成完整URL的函数。

  • urllib.robotparser(robots.txt解析模块):该模块提供了一个单一的类RobotFileParser,用于回答特定用户代理是否被允许在发布robots.txt文件的网站上获取URL。

【1】urllib.request(请求模块) —> 用于打开 URL 的可扩展库

(1)urllib.request.urlopen

urllib.request.urlopen()函数的主要工作是打开指定的URL并检索响应。

函数原型

urlopen() 方法不仅支持 HTTP 协议,还支持其他常见的协议,

  • 如 FTP、SMTP 和 HTTPS。
  • Telnet
  • File / URL
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
- url:要打开的URL。
- data:这是一个可选参数,用于指定要发送到服务器的数据。
	如果不提供此参数,则请求将是GET请求。如果提供了它,则请求将是POST请求。
- timeout:这是一个可选参数,用于指定请求的超时时间(以秒为单位)。
	如果服务器在此时间内没有响应,则会引发timeout异常。
- cafile:这是一个可选参数,用于指定包含用于SSL验证的CA证书的文件的路径。
- capath:这是一个可选参数,用于指定包含用于SSL验证的CA证书的目录的路径。
- cadefault:这是一个可选参数,用于指定是否使用系统的默认CA证书进行SSL验证。
- context:这是一个可选参数,用于指定用于请求的SSL上下文。

例子:

import urllib.request

response = urllib.request.urlopen('**你的网站**')
html = response.read()
print(html)

urllib.request.urlopen 函数用于打开 URL 你需要了解的网站
然后,使用 read 方法将 URL 的内容读入变量 html 中。(方法获取的响应页面的返回值。打开的 URL 中读取内容并返回字节字符串(bytes)。)
最后,使用 print 函数将 html 的内容打印到控制台。

(2)urllib.request.urlretrieve —>该函数检索指定URL的内容并将其保存到本地文件中。

urllib.request.urlretrieve(url, [filename=None, ]reporthook=None, data=None)
  • url:要检索的URL。

  • filename:要将内容保存到的本地文件名。如果未指定,则该函数将尝试从URL中猜测文件名并将其保存到当前工作目录中。

  • reporthook:可选参数,用于指定一个回调函数,该函数将在检索过程中被调用以显示进度信息。

例子

如果传递了一个文件名参数,并且URL指向本地资源,则结果是从本地文件复制到新文件。

urllib.request.urlretrieve函数返回一个元组,其中包含新创建的数据文件的路径以及生成的HTTPMessage对象。
在这里插入图片描述
在这里插入图片描述

【2】- urllib.error(异常处理模块):该模块定义了由urllib.request引发的异常类。

urllib.error.URLError(reason, *args): 这是所有在URL处理期间发生的异常的基类。当无法打开或检索URL时,会引发此异常。reason参数是一个字符串,用于描述错误的原因。args参数是一个元组,包含其他与错误相关的信息。
urllib.error.HTTPError(url, code, msg, hdrs, fp):这是URLError的子类,当发生HTTP错误时引发。它包含有关HTTP错误代码和原因的信息。url参数是引发错误的URL,code参数是HTTP错误代码,msg参数是HTTP错误原因短语,hdrs参数是HTTP响应头,fp参数是一个文件对象,用于读取错误响应的主体。
urllib.error.ContentTooShortError(msg, content): 这是URLError的子类,当下载的内容比预期的短时引发。msg参数是一个字符串,用于描述错误的原因。content参数是一个字节串,包含下载的内容。

# 导入urllib.error模块:
import urllib.error

【3】urllib.parse(url解析模块):该模块定义了将URL解析为其组成部分的函数,以及将URL组件组合成完整URL的函数。

- urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True) -> ParseResult: 将URL解析为其组件,并返回一个包含解析结果的ParseResult对象。
- urllib.parse.urlunparse(components) -> str: 接受URL组件的元组并返回完整的URL字符串。
- urllib.parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=quote_plus) -> str: 接受查询参数的字典并返回URL编码的字符串。
- urllib.parse.parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None) -> Dict[str, Union[str, List[str]]]: 接受URL编码的查询字符串并返回查询参数的字典。

【4】 urllib.robotparser(robots.txt解析模块):该模块提供了一个单一的类RobotFileParser,用于回答特定用户代理是否被允许在发布robots.txt文件的网站上获取URL。

- urllib.robotparser.RobotFileParser(url=''): 创建一个新的RobotFileParser对象,该对象可以解析指定URL的robots.txt文件。
- urllib.robotparser.set_url(url): 设置要解析的robots.txt文件的URL。
- urllib.robotparser.read(): 从指定的URL读取robots.txt文件并解析其内容。
- urllib.robotparser.can_fetch(useragent, url): 检查指定的用户代理是否可以访问指定的URL。如果可以,返回True;否则返回False。
- urllib.robotparser.mtime(): 返回上次读取robots.txt文件的时间戳。
- urllib.robotparser.modified(): 返回robots.txt文件是否已被修改。

利用 urllib 库获取网络资源

当然获取想要的网络资源才是我们学习这篇文章的第一要义。
可以参考的的这篇博客:爬虫想要的HTML


  1. HTTP请求是指客户端向服务器发送请求并从服务器接收响应的过程。 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/494967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP: SMARTFORMS

事务码:SMARTFORMS 1、输入表格名,点击创建/更改/显示 2、设置页格式 查看页格式事务码:SPAD 创建的详细流程:详见博客ABAP开发Smartform实例_abap smartform_小强pp的博客-CSDN博客 SMARTFORMS TEMPLATE使用方法_Seele_1018的…

MT6771安卓手机核心板MT6771核心板方案智能模块

MT6771核心板是一款基于MTK平台、工业级高性能、可运行android10.0操作系统的4GAI安卓智能模块,核心处理器架构采用ARM4xCortex-A73upto2.0GHzARM4xCortex-A53upto2.0GHz,为智能设备提供了很好的运算支持。很高兴看到这个模块集成了4G LTE连接和高能效。…

界面开发框架Qt新手入门 - 自定义排序/筛选模型示例(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 自定义排序/筛选模型…

ALOHA 开源机械臂(Viper 300 Widow X 250 6DOF机械臂组成)第一部分

软件简介: ALOHA 即 A Low-cost Open-source Hardware System for Bimanual Teleoperation,是一个低成本的开源双手遥控操作硬件系统,即开源机械臂。其算法 Action Chunking with Transformers (ACT) 采用了神经网络模型 Transformers&#…

#杂谈 个人嵌入式开发的学习

本人目前从事的是嵌入式软件开发的相关工作。这是一个关于个人做项目时用过的开发工具的杂谈,仅是为了记录学习经历,同时也为和我有同样瞎搞东西的爱好者提供一个学习思路。 前言 我的技术栈: 下面介绍一下我用过在或者还在用的开发工具&…

JavaWeb综合案例-Servlet优化

将WebServlet的访问路径不要写死,写成通配符的形式 1. 反射笔记(后续代码会用到该机制) 1.1 基础概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象&am…

【Nodejs】Express实现接口

介绍 Express 是一个第三方模块,用于快速搭建服务器 类似于jquery与DOMExpress 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架。express保留了http模块的基本API,使用express的时候,也能使用http的APIexpress还额外封…

【花雕学AI】我们如何才能避免被ChatGPT替代?——一个跨学科的视角

ChatGPT是一个由OpenAI开发的AI文本工具,它可以理解和生成自然语言,从而与用户进行对话。ChatGPT是基于GPT-3或者GPT-4模型的,这是目前最大和最先进的语言模型之一。ChatGPT通过在大量的互联网文本数据上进行预训练和强化学习,学习…

linux修改程序的配置文件

修改指定文件中的数&#xff0c;例如创建一个文件如图 把6修改成7 修改完成 代码如下&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <unistd.h> #include <string.h> #incl…

【英语】大学英语CET考试,阅读部分1(阅读概述,SectionC仔细阅读140)

文章目录 1、阅读概述1.1 考试概况&#xff1a;大纲解读备考策略1.2 做题原则&#xff1a;定位1.3 标点符号和句子逻辑1.4 一级词汇 2、细节题&#xff08;10题占9题&#xff09;2.1 逻辑关系&#xff08;并列和递进&#xff0c;同一方向&#xff09;2.2 逻辑关系&#xff08;转…

Flutter学习之旅 -AspectRatio Card CircleAvatar组件

文章目录 AspectRatioCardCircleAvatar定义方法封装 AspectRatio AspectRatio的作用是根据设置调整子元素child的宽高比。 class MyHomePage extends StatelessWidget {const MyHomePage({Key? key}) : super(key: key);overrideWidget build(BuildContext context) {//获取设…

解决文件夹显示“文件夹变文件”的方法

在文件夹属性设置中&#xff0c;找到“文件名”&#xff0c;双击一下&#xff0c;选中的项目就会显示为“文件夹”&#xff0c;如果没有选中&#xff0c;点击“打开文件夹”就可以了。这是因为系统在默认情况下&#xff0c;所有的文件夹都是以系统默认的路径来命名的。当然也有…

构建 Kubernetes Operator 的原则是什么?

Kubernetes&#xff08;简称K8s&#xff09;上数据服务的自动化越来越受欢迎。在K8s上运行有状态的工作负载意味着使用Operator。然而&#xff0c;它发展演化到今天已经变得非常复杂&#xff0c;像Operator这样的应用模式和扩展方式对于开发者与运维者而言愈发受到欢迎。 但工…

【勝讯云 Finops Crane 集训营】基于 FinOps 的云资源分析与成本优化平台实操及说明

介绍 Crane 是由腾讯云主导开源的国内第一个基于云原生技术的成本优化项目&#xff0c;遵循 FinOps 标准&#xff0c;已经获得FinOps基金会授予的全球首个认证降本增效开源方案。它为使用 Kubernetes 集群的企业提供了一种简单、可靠且强大的自动化部署工具。 Crane 的设计初衷…

来这公司一年碰到的问题比我过去10年都多

无意间发现我们 Kafka 管理平台的服务的 open files 和 CPU 监控异常&#xff0c;如下图&#xff0c;有一台机器 CPU 和 opfen files 指标持续在高位&#xff0c;尤其是 open files 达到了4w。 原因分析 第一反应是这个服务请求很高&#xff1f;但是这个服务是一个管理服务不应…

云安全的挑战与发展:云原生安全将是未来趋势吗?

引言 随着企业数字化转型的推进和云计算的普及&#xff0c;云安全已经成为了当下IT行业的热点话题之一。尽管云计算已经被广泛应用&#xff0c;但在云安全方面仍存在一些挑战和问题。本文将探讨当前云安全面临的挑战&#xff0c;并分析云原生安全在未来的发展趋势。 第一章 云…

Opera One将取代 Opera 浏览器

导读Opera 日前推出了一款名为 Opera One 的新浏览器&#xff0c;该浏览器正处于开发者预览阶段&#xff0c;用户可以访问官网下载试用&#xff08;链接&#xff09;。这个浏览器的终极目标是在今年晚些时候取代其当家的 Opera 浏览器。 Opera One 遵循 "模块化设计理念&q…

Netty(2)

Netty 文章目录 Netty4 Netty 模型4.1 Netty 模型介绍4.2 Netty demo4.3 Netty 异步模型4.3.1 基本介绍4.3.2 异步模型4.3.3 Future-Listener 机制4.4 Netty 任务队列 task 4 Netty 模型 4.1 Netty 模型介绍 Netty 线程模式&#xff1a;Netty 主要基于主从 Reactor 多线程模型…

2023年开源社项目委员会介绍

2023 项目委员会成员 项目委员会主席&#xff1a;石垚 &#xff08;tech-querykaiyuanshe.org&#xff09; 项目委员会秘书 &#xff1a;丁文昊 &#xff08;dingwenhaokaiyuanshe.org&#xff09; 开源社官网项目组&#xff1a; 组长&#xff1a;石垚 &#xff08;tech-queryk…

2023 ATTCK v13版本更新指南

一、什么是ATT&CK ATT&CK&#xff08;Adversarial Tactics, Techniques, and Common Knowledge &#xff09;是一个攻击行为知识库和模型&#xff0c;主要应用于评估攻防能力覆盖、APT情报分析、威胁狩猎及攻击模拟等领域。 二、ATT&CK 发展历史 1996年&#xff1…