Python request与requests比较

本文探讨了Python中内置的request模块与第三方库requests的区别。request需要通过urllib.request导入,而requests更方便,直接设置HTTP头和数据格式。request返回utf-8字符串,requests可指定返回类型如json或byte。此外,还提供了处理中文乱码的示例,分别使用request和requests获取并保存网页内容到文件。
部署运行你感兴趣的模型镜像

爬取静态网页的数据相对比较简单,以往都是照着帖子粘一下代码能跑起来就OK了

后来发现 在import时候 有的用的是 request 有的是requests,虽然只是差了一个s

比较了一下这两个包

(1)request是python 自带的,使用 import urllib.request;而 requests需要pip install

(2)request 采用的是urlopen 然后read后进行decode获得网页内容,若需要加header之类的,需要增加request中的Request类来定义header;

而requests更加便捷,直接设置header 和数据格式即可

(3)返回的内容:request返回的一般是utf-8的字符串,requests可以定义返回的类型是json ,或者 byte等

(4)request是先构造get post 请求,再发起;而requests是构造get post 并行发起

下面是一个关于request 与 requests使用,及涉及中文解码的小例子

import urllib.request
import requests
#from urllib.parse import quote

"""
爬取静态网页 https://www.ccf.org.cn/Academic_Evaluation/AI/
比较request 和 requests不同使用
以及中文字符乱码的处理

"""


def fetch_data_byrequest(url):
	#req = requests.get(url)
	#html = req.text
	#return html
	req=urllib.request.urlopen(url)
	content=req.read().decode()
	return content

def fetch_data_byrequests(url):
	req = requests.get(url)
	content = req.text.encode(req.encoding).decode(req.apparent_encoding)
	return content

if __name__=="__main__":
	url = "https://www.ccf.org.cn/Academic_Evaluation/AI/"
	content_req = fetch_data_byrequest(url)
	#print (content_req)

	content_reqs=fetch_data_byrequests(url)
	#print (content_reqs)

	# 输出到文件
	f1 = open("request_content.txt","w",encoding="utf-8")
	print(content_req,file=f1)
	f1.close()

	f2=open("requests_content.txt","w",encoding="utf-8")
	print(content_reqs,file=f2)
	f2.close()


 

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值