Python爬虫——如何使用urllib的HTTP基本库

怎样通过 urllib库 发送 HTTP 请求?

 

urllib库主要由四个模块组成:

  • urllib.request 打开和读取 URL
  • urllib.error 包含 urllib.request 抛出的异常
  • urllib.parse 用于解析 URL
  • urllib.robotparser 用于解析 robots.txt 文件
1. 使用urllib.parse解析URL
  • 使用urlparse()分段URL

  • 在这里,我们用urlparse()函数构建了一个实例对象(ParseResult类型),并将其赋值给result,以便调用。

    事实上,ParseResult类型对象包含6个部分:

    • scheme,代表协议,通常在"://"前面,这里即http
    • netloc,代表域名,通常在第一个"/"前面,这里即docs.python.org:80
    • path,代表访问路径,通常在域名之后,这里即/3/library/urllib.parse.html
    • params,代表参数,通常在"?"之前,这里不存在
    • query,代表查询条件,通常在"?"之后,这里也不存在
    • fragment,代表瞄点,通常在"#"之后,用于直接定位页面内部的下拉位置,这里即url-parsing
  • 使用urlunparse()构造URL

  • 事实上,在urllib.parse中,解析URL的方法不仅有urlparse()函数,还有urlsplit()等;构造URL的方法不仅有urlunparse()函数,还有urlunspliturlencode()等。

2. 使用urllib.request打开 URL,模拟发送请求
  • 使用urllib.request.urlopen函数发送HTTP请求,构造对象

 

  • urllib.request.urlopen 函数构造一个接受请求的实例对象(HTTPResponse类型),并将其赋值给response变量,以便之后使用。

    read()方法可以得到返回的网页内容。事实上,HTTPResponse类型的对象,不仅可以调用read()getheaders()方法,还可以调用statusmsg属性来查看请求发送后返回的一系列信息。

  • 通过Request类灵活配置参数,构建请求信息对象

  • 这里我们依然使用urlopen()方法来发送HTTP请求,但是传递的不再是单纯的URL,而是一个Request类型的对象。通过集合各种参数,将其独立成一个对象,可以更加丰富和灵活地配置参数。

    这里的headers即为请求头,method即为请求方法

  • 使用Handler处理器进行高级操作(以Cookies处理为例)

  • HTTPCookieProcessorurllib.request模块里用于处理Cookie的一个类。值得注意的是这里打开链接的不再是request.urlopen()函数,而是用Opener对象的open()方法来发出请求。

3. 使用urllib.error捕捉请求错误,进行异常处理
  • 使用URLError类捕捉URL异常

     
    • 在这里如果发生网页不存在等请求异常,我们就可以通过URLError捕捉异常,从而避免程序的异常终止

    • 使用HTTPError类捕捉HTTP请求错误

       

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux连接文件那点事

什么是连接文件 将一个文件和另一个文件建立联系,分为硬链接和软连接(符号连接)。 硬链接 Linux中,所有的文件都有一个inode,这个东西就是文件的ID号,硬链接的方式就是通过这个inode来产生新的文件名来建…

【动态规划】:路径问题_地下城游戏

朋友们、伙计们,我们又见面了,本专栏是关于各种算法的解析,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结构专栏&…

Metes and Bounds Pro for Mac 激活版:精准数据转换与绘图利器

Metes and Bounds Pro for Mac是一款专为土地测量和边界划定而设计的专业软件,为Mac用户提供了高效、精确的测量工具。其核心功能在于其全面的测量工具和简便的操作流程,能够满足在土地管理、房地产开发、农业规划等领域的多样化需求。 这款软件集合了距…

语义分割——高分卫星土地覆盖数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

C++ QT设计模式 (第二版)

第3章 Qt简介 3.2 Qt核心模块 Qt是一个大库,由数个较小的库或者模块组成,最为常见的如下:core、gui、xml、sql、phonon、webkit,除了core和gui,这些模块都需要在qmake的工程文件中启用 QTextStream 流,Qdat…

2万字实操入门案例之在Springboot框架下用Mybatis简化JDBC开发实现基础的操作MySQL之预编译SQL主键返回增删改查

环境准备 准备数据库表 use mybatis;-- 部门管理 create table dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null comment 创建时间,update_time datetime not null comme…

Naive RAG 、Advanced RAG 和 Modular RAG 简介

简介: RAG(Retrieval-Augmented Generation)系统是一种结合了检索(Retrieval)和生成(Generation)的机制,用于提高大型语言模型(LLMs)在特定任务上的表现。随…

EEL中 python端的函数名是如何传递给js端的

python端的函数名是如何传递给js端的 核心步骤:将函数名列表注入到动态生成的 eel.js 中,这样前端一开始引用的eel.js本身已经包含有py_function的函数名列表了。你打开开发者工具看看浏览器中的 eel.js文件源代码就知道了。 具体实现: # 读…

启明智显分享|国产RISC-V@480MHz“邮票孔”工业级HMI核心板,高品质低成本,仅34.9元!

「Model系列」芯片是启明智显针对工业、行业以及车载产品市场推出的系列HMI芯片,主要应用于工业自动化、智能终端HMI、车载仪表盘、串口屏、智能中控、智能家居、充电桩显示屏、储能显示屏、工业触摸屏等领域。此系列具有高性能、低成本的特点,支持工业宽…

Transformers实战01-开箱即用的 pipelines

文章目录 简介安装pipelines图片转文本文本生成情感分析零训练样本分类遮盖词填充命名实体识别自动问答自动摘要 pipeline 背后做了什么?使用分词器进行预处理将预处理好的输入送入模型对模型输出进行后处理 简介 Transformers 是由 Hugging Face 开发的一个 NLP 包…

读人工智能时代与人类未来笔记03_演变

1. 演变 1.1. 每个社会都找到了属于自己的一套适应世界的方法 1.1.1. 适应的核心,是有关人类心智与现实之间关系的概念 1.1.2. 人类认识周围环境的能力 1.1.2.1. 这种能力通过知识获得,同时也受到知识…

奥维地图下载高清影像的两种方式!以及ArcGIS、QGIS、GlobalMapper、自编工具下载高清影像的方法推荐!

今天来介绍一下奥维互动地图是如何下载高清影像的,也不是多了不起的功能!有朋友问,加上这个软件确实用的人多。 下载的高清数据在ArcGIS中打开的效果! 开始介绍奥维之前我们也介绍一下我们之前介绍的几个方法,没有优劣…

【提示学习论文】TCP:Textual-based Class-aware Prompt tuning for Visual-Language Model

TCP:Textual-based Class-aware Prompt tuning for Visual-Language Model(CVPR2024) 基于文本的类感知提示调优的VLMKgCoOp为baseline,进行改进,把 w c l i p w_{clip} wclip​进行投影,然后与Learnable prompts进行…

您可以使用WordPress创建的19种网站类型

当人们决定为什么他们应该使用WordPress时,我们经常会被问到“WordPress可以做[空白]吗?答案大多是肯定的。在本文中,我们将向您展示您可以使用WordPress创建的19种不同类型的网站,而无需学习任何编程技巧。 目录 隐藏 1 开始使用…

html--地图

<!DOCTYPE html> <html lang"en"> <head><meta charset"utf-8"><title>ECharts</title><!--Step:1 引入一个模块加载器&#xff0c;如esl.js或者require.js--><script src"js/esl.js"></scr…

SpringBoot项目的项目部署全过程

一、前端 安装nginx 1.将提前准备好的nginx的安装包上传到Linux中/opt目录下(我用的是Xftp) 2.解压 2.1:在xshell中解压该文件: tar -zxvf nginx-1.20.1.tar.gz 2.2:进入解压后的目录 cd nginx-1.20.1/ 2.3:安装需要的依赖 yum -y install zlib zlib-devel openssl openssl-de…

【Doris的安装与部署】

1 集群规划和环境准备 Doris作为一款MPP架构的OLAP数据库&#xff0c;可以在绝大多数主流的商用服务器上运行。 1.1 环境要求 一般推荐使用Linux系统&#xff0c;版本要求是CentOS 7.1及以上或者Ubuntu 16.04及以上&#xff0c;这也是目前服务器市场最主流的操作系统。 操作…

在 CSS 中使用 text-emphasis 来增强文本的趣味性

在CSS中设置文本样式的方法有很多。您可以更改颜色、大小、字体&#xff0c;甚至添加阴影和轮廓等效果。但最近&#xff0c;我了解到一个我以前没有听说过的时尚 CSS 属性&#xff0c;它非常棒&#xff01; 它被称为文本强调&#xff08;text-emphasis&#xff09;&#xff0c…

1725 ssm资产管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java ssm资产管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/…

基于STM32F401RET6智能锁项目(BS82166A_3触摸按键)

一、BS81x 特征 • 工作电压&#xff1a;2.2V~5.5V • 低待机电流 • 自动校准功能 • 可靠的触摸按键检测 • 自动切换待机 / 工作模式 • 最长按键输出时间检测 • 具备抗电压波动功能 • Level Hold&#xff0c;可选高有效或低有效 • NMOS 输出内建上拉电阻 /CMOS 直接 输出…