Python urllib、requests、HTMLParser

2024-02-24 07:36

本文主要是介绍Python urllib、requests、HTMLParser,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HTTP协议

HTTP 协议:一般指HTTP(超文本传输)协议。
HTTP是为Web浏览器和Web服务器之间的通信而设计的,基于TCP/IP通信协议嘞传递数据。

HTTP消息结构

客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式

  • 请求行(request line)
  • 请求头(header)
  • 空行
  • 请求数据

在这里插入图片描述

服务器相应消息

HTTP相应也由四个部分组成

  • 状态行
  • 消息报头
  • 空行
  • 响应正文

在这里插入图片描述

HTTP响应头信息

HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。
以下是一些例子

  • Allow 服务器支持哪些请求方法
  • Connect-Encoding 文档的编码方法
  • Connect-Length 表示内容长度
  • Connect-Type 表示后面的文档属于什么MIME类型。
    • 该属性用于定义网络文件的类型和网页的编码 例如Connect-Type: text/html; charset=utf-8
    • MIME类型:描述消息内容类型的标准。通用结构type/subtype
  • Date 当前的GMT(格林威治标准时间)时间

HTTP请求方法

HTTP请求方法有很多种,其中1.0版本有 GET、POST、HEAD三种,1.1版本又新增了六种。

  • GET:请求指定的页面信息,并返回实体主体
  • HEAD:类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头
  • POST:向指定资源提交数据进行处理请求。数据被包含在请求体中。请求可能导致新的资源的建立或已有资源的修改。

HTTP状态码

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,共五类。

  • 1xx:信息,服务器收到请求,需要操作者继续执行操作
  • 2xx:成功,操作被成功接收并处理
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务器错误

urllib 示例

urllib发送get请求

直接上代码,urllib发送get请求

from urllib import requestwith request.urlopen('http://httpbin.org/get') as f:data = f.read()    #f.read()返回响应正文#print(data.decode('utf-8'))
#直接输出结果,需要解码#输出结果到文件
with open('get_response.text', 'wb') as f:f.write(data)

最简单的发送get请求的方法,使用openurl函数,尽管这个函数能实现的功能较为有限。
http://httpbin.org/get可以帮助学习如何发送get请求。响应的正文包含了get请求的相关信息。

with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭/线程中锁的自动获取和释放等。

以下是响应的正文部分:

{"args": {}, "headers": {"Accept-Encoding": "identity", "Host": "httpbin.org", "User-Agent": "Python-urllib/3.12", "X-Amzn-Trace-Id": "Root=1-65d7213d-6d15d2b651139df358d943b7"}, "origin": "42.229.145.105", "url": "http://httpbin.org/get"
}

该网址返回的正文是请求的响应信息

  • args可以通过url直接带入:http://httpbin.org/get?name=Bob&job=teacher
  • headers请求头中可以看出,User-Agent就是我们使用的库函数,一些网站需要将User-Agent指定为常用的浏览器。

若要添加请求头,则需要用到urllib.Request()类。

requests库

requests库是基于python开发的HTTP库,与urllib标准库相比,代码要简洁。实际上,requests库是在urllib的基础上进行了高度封装。
使用requests库来发送HTTP请求更加简便。

get请求

import requests#设置请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
}#传入参数时,可以利用params关键字传入,接收字典类型,与直接在url加入参数效果相同。
#使用post方法时,利用data关键字接收参数。r = requests.get('https://baidu.com', headers = headers)#基本属性
print(type(r))
#响应对象类型  <class 'requests.models.Response'>
print(r.status_code)
#响应状态码  200
print(r.cookies)
#查看cookies  <RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
print(r.headers)
#查看响应头
print(r.url)
#url#响应正文内容
print(r.text)  #相应内容(str)
print(r.content)  #响应内容(bytes)  可以用decode解码

这篇关于Python urllib、requests、HTMLParser的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/741396

相关文章

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主