Python2中的urllib、urllib2与Python3中的urllib以及第三方模块requests

2024-02-09 00:38

本文主要是介绍Python2中的urllib、urllib2与Python3中的urllib以及第三方模块requests,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

python2中,urlliburllib2

都是接受URL请求的相关模块,但是提供了不同的功能。两个最显著的不同如下:

(urllib2.urlopen accepts an instance of the Requestclass or a url, whereas urllib.urlopen only accepts a url

1、urllib2可以接受一个Request的实例来设置URL请求的headers

2、urllib仅可以接受URL。这意味着,你不可以伪装你的User Agent字符串等。

    urllib 有urlencode,urllib2没有,这也是为什么总是urllib,urllib2常会一起使用的原因

req = urllib2.Request( url=url,  data=postdata,  headers=headers  
)  
result = urllib2.urlopen(req) 

Python3x中的urllib包、http包以及第三方包requests

Python3中把包成为了2个包,就是http与urllib,详解如下:
http会处理所有客户端--服务器http请求的具体细节,其中:
(1)client会处理客户端的部分
(2)server会协助你编写Python web服务器程序
(3)cookies和cookiejar会处理cookie,cookie可以在请求中存储数据

urllib是基于http的高层库,它有以下三个主要功能:
(1)request处理客户端的请求
(2)response处理服务端的响应
(3)parse会解析url

#发送数据和header  
import urllib.parse  
import urllib.request  
url = ''  
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'  
values = {  
'act' : 'login',  
'login[email]' : '',  
'login[password]' : ''  
}  
headers = { 'User-Agent' : user_agent }  
data = urllib.parse.urlencode(values)  
req = urllib.request.Request(url, data, headers)  
response = urllib.request.urlopen(req)  
the_page = response.read()  
print(the_page.decode("utf8")) 

Python第三方库requests

requests 使用的是 urllib3,继承了urllib2的所有特性。requests有很大功能特性:

支持HTTP连接保持和连接池;支持使用cookie保持会话;支持文件上传;支持自动确定响应内容的编码;支持国际化的 URL 和 POST 数据自动编码。requests不是python自带的库,需要另外安装 

pip install requests
先来一个简单的例子吧

import requestsr = requests.get(url='http://www.baidu.com')    # 最基本的GET请求
print(r.status_code)    # 获取返回状态
#带参数的GET请求,http://dict.baidu.com/s?wd=python
r = requests.get(url='http://dict.baidu.com/s', params={'wd':'python'})   
print(r.url)
print(r.text)   #打印解码后的返回数据
除了get 请求外,还可以POST请求,PUT请求,DELETE请求,HEAD请求,OPTIONS请求

对于WEB系统除了get请求外,还可以POST请求,PUT请求,DELETE请求,HEAD请求,OPTIONS请求一般只支持 GET 和 POST,有一些还支持 HEAD 方法
requests的官方指南文档:http://docs.python-requests.org/en/latest/user/quickstart.html

这篇关于Python2中的urllib、urllib2与Python3中的urllib以及第三方模块requests的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

python内置模块datetime.time类详细介绍

​​​​​​​Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 ----------动动小手,非常感谢各位的点赞收藏和关注。----------- 使用datet

C8T6超绝模块--EXTI

C8T6超绝模块–EXTI 大纲 控制流程结构体分析EXTI实现按键 具体案例 控制流程 这里是流程框图,具体可以去看我STM32专栏的EXTI的具体分析 结构体分析 typedef struct {uint32_t EXTI_Line; // 中断/事件线EXTIMode_TypeDef EXTI_Mode; // EXTI 模式EXTITrigger_TypeDef EXTI_

1、创建多模块的maven springboot项目

现在的java的项目都是多模块的,这次也跟个风。 目标:实现下述结构 项目AcedBoot, 子模块:         aced-api 对外提供接口,         aced-web 给前端提供接口,         aced-service 服务层,         aced-dao 数据底层,包含数据库mapper和实体类entity,         aced-commo

SW - 引入第三方dwg图纸后,修改坐标原点

文章目录 SW - 引入第三方dwg图纸后,修改坐标原点概述笔记设置图纸新原点END SW - 引入第三方dwg图纸后,修改坐标原点 概述 在solidworks中引入第三方的dwg格式图纸后,坐标原点大概率都不合适。 全图自动缩放后,引入的图纸离默认的原点位置差很多。 需要自己重新设置原点位置,才能自动缩放后,在工作区中间显示引入的图纸。 笔记 将dwg图纸拖到SW中