导航:首页 > 编程语言 > pythonhttp编码

pythonhttp编码

发布时间:2023-01-21 16:15:45

python常用函数包有哪些

一些python常用函数包:

1、Urllib3

Urllib3是一个 Python 的 HTTP 客户端,它拥有 Python 标准库中缺少的许多功能:

2、Six

six 是一个是 Python 2 和 3 的兼容性库。这个项目旨在支持可同时运行在 Python 2 和 3 上的代码库。它提供了许多可简化 Python 2 和 3 之间语法差异的函数。

3、botocore、boto3、s3transfer、awscli

Botocore是 AWS 的底层接口。Botocore是 Boto3 库(#22)的基础,后者让你可以使用 Amazon S3 和 Amazon EC2 一类的服务。Botocore 还是 AWS-CLI 的基础,后者为 AWS 提供统一的命令行界面。

S3transfer(#7)是用于管理 Amazon S3 传输的 Python 库。它正在积极开发中,其介绍页面不推荐人们现在使用,或者至少等版本固定下来再用,因为其 API 可能发生变化,在次要版本之间都可能更改。Boto3、AWS-CLI和其他许多项目都依赖s3transfer。

4、Pip

pip是“Pip Installs Packages”的首字母递归缩写。

pip很容易使用。要安装一个包只需pip install <package name>即可,而删除包只需pip uninstall <package name>即可。

最大优点之一是它可以获取包列表,通常以requirements.txt文件的形式获取。该文件能选择包含所需版本的详细规范。大多数 Python 项目都包含这样的文件。

如果结合使用pip与virtualenv(列表中的 #57),就可以创建可预测的隔离环境,同时不会干扰底层系统,反之亦然。

5、Python-dateutil

python-dateutil模块提供了对标准datetime模块的强大扩展。我的经验是,常规的Python datetime缺少哪些功能,python-dateutil就能补足那一块。

6、Requests

Requests建立在我们的 #1 库——urllib3基础上。它让 Web 请求变得非常简单。相比urllib3来说,很多人更喜欢这个包。而且使用它的最终用户可能也比urllib3更多。后者更偏底层,并且考虑到它对内部的控制级别,它一般是作为其他项目的依赖项。

7、Certifi

近年来,几乎所有网站都转向 SSL,你可以通过地址栏中的小锁符号来识别它。加了小锁意味着与该站点的通信是安全和加密的,能防止窃听行为。

8、Idna

根据其 PyPI 页面,idna提供了“对 RFC5891 中指定的应用程序中国际化域名(IDNA)协议的支持。”

IDNA的核心是两个函数:ToASCII和ToUnicode。ToASCII会将国际 Unicode 域转换为 ASCII 字符串。ToUnicode则逆转该过程。在IDNA包中,这些函数称为idna.encode()和idna.decode()

9、PyYAML

YAML是一种数据序列化格式。它的设计宗旨是让人类和计算机都能很容易地阅读代码——人类很容易读写它的内容,计算机也可以解析它。

PyYAML是 Python 的YAML解析器和发射器,这意味着它可以读写YAML。它会把任何 Python 对象写成YAML:列表、字典,甚至是类实例都包括在内。

10、Pyasn1

像上面的IDNA一样,这个项目也非常有用:

ASN.1 类型和 DER/BER/CER 编码(X.208)的纯 Python 实现

所幸这个已有数十年历史的标准有很多信息可用。ASN.1是 Abstract Syntax Notation One 的缩写,它就像是数据序列化的教父。它来自电信行业。也许你知道协议缓冲区或 Apache Thrift?这就是它们的 1984 年版本。

11、Docutils

Docutils是一个模块化系统,用来将纯文本文档处理为很多有用的格式,例如 HTML、XML 和 LaTeX 等。Docutils能读取reStructuredText格式的纯文本文档,这种格式是类似于 MarkDown 的易读标记语法。

12、Chardet

你可以用chardet模块来检测文件或数据流的字符集。比如说,需要分析大量随机文本时,这会很有用。但你也可以在处理远程下载的数据,但不知道用的是什么字符集时使用它。

13、RSA

rsa包是一个纯 Python 的 RSA 实现。它支持:

它既可以用作 Python 库,也能在命令行中使用。

14、Jmespath

JMESPath,发音为“James path”,使 Python 中的 JSON 更容易使用。它允许你声明性地指定如何从 JSON 文档中提取元素。

15、Setuptools

它是用于创建 Python 包的工具。不过,其文档很糟糕。它没有清晰描述它的用途,并且文档中包含无效链接。最好的信息源是这个站点,特别是这个创建 Python 包的指南。

16、Pytz

像dateutils一样,这个库可帮助你处理日期和时间。有时候,时区处理起来可能很麻烦。幸好有这样的包,可以让事情变得简单些。

17、Futures

从 Python 3.2 开始,python 提供current.futures模块,可帮助你实现异步执行。futures 包是该库适用于 Python 2 的 backport。它不适用于 Python3 用户,因为 Python 3 原生提供了该模块。

18、Colorama

使用 Colorama,你可以为终端添加一些颜色:

更多Python知识请关注Python自学网

⑵ 如何使用python立即发送http请求参数

1 首先安装requests这个模块,方法是 输入pip install requests。当然你要装好pip这个包管理器。

2 然后
import requests
url = " " # 这里是你的url
your_param = {'Refer':"sina_index"} # 这里是你要发送的请求参数!, 它在url后边加上 ??Refer=sina_index这样子的东东

result = requests.get(url, param = your_param) # 发送请求,如果url是http://s.weibo.com/weibo/s 那么 这句话的的效果就是 http://s.weibo.com/weibo/s?Refer=sina_index
result_final = result.text #这样你就获取到了你发送的这个URL + 参数 之后的结果

全部手打的,采纳呗。

⑶ 怎么在Python里使用UTF-8编码

概述

在python代码即.py文件的头部声明即可

解析

py文件中的编码

Python 默认脚本文件都是 ANSCII 编码的,当文件 中有非 ANSCII 编码范围内的字符的时候就要使用"编码指示"来修正一个 mole 的定义中,如果.py文件中包含中文字符(严格的说是含有非anscii字符),则需要在第一行或第二行指定编码声明:

# -*- coding=utf-8 -*-

#coding=utf-8

# 以上两种选其一即可

其他的编码如:gbk、gb2312也可以;否则会出现:

SyntaxError: Non-ASCII character 'xe4' in file test.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

python中的编码与解码

先说一下python中的字符串类型,在python中有两种字符串类型,分别是 str 和 unicode,他们都是basestring的派生类;

str类型是一个包含Characters represent (at least) 8-bit bytes的序列;

unicode 的每个 unit 是一个 unicode obj;

在str的文档中有这样的一句话:

    The string data type is also used to represent arrays of bytes, e.g., to hold data read from a file.

也就是说在读取一个文件的内容,或者从网络上读取到内容时,保持的对象为str类型;如果想把一个str转换成特定编码类型,需要把str转为Unicode,然后从unicode转为特定的编码类型如:utf-8、gb2312等。

拓展内容

utf-8编码

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只须做少部分修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字的应用中,优先采用的编码。

UTF-8使用一至六个字节为每个字符编码(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多四个字节):

1、128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。

2、带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要两个字节编码(Unicode范围由U+0080至U+07FF)。

3、其他基本多文种平面(BMP)中的字符(这包含了大部分常用字,如大部分的汉字)使用三个字节编码(Unicode范围由U+0800至U+FFFF)。

4、其他极少使用的Unicode辅助平面的字符使用四至六字节编码(Unicode范围由U+10000至U+1FFFFF使用四字节,Unicode范围由U+200000至U+3FFFFFF使用五字节,Unicode范围由U+4000000至U+7FFFFFFF使用六字节)。

对上述提及的第四种字符而言,UTF-8使用四至六个字节来编码似乎太耗费资源了。但UTF-8对所有常用的字符都可以用三个字节表示,而且它的另一种选择,UTF-16编码,对前述的第四种字符同样需要四个字节来编码,所以要决定UTF-8或UTF-16哪种编码比较有效率,还要视所使用的字符的分布范围而定。不过,如果使用一些传统的压缩系统,比如DEFLATE,则这些不同编码系统间的的差异就变得微不足道了。若顾及传统压缩算法在压缩较短文字上的效果不大,可以考虑使用Unicode标准压缩格式(SCSU)。

互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。互联网邮件联盟(IMC)建议所有电子邮件软件都支持UTF-8编码。

⑷ 如何用Python写一个http post请求

HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。常见的四种编码方式如下:
1、application/x-www-form-urlencoded
这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。请求类似于下面这样(无关的请求头在本文中都省略掉了):
POST HTTP/1.1 Content-Type:
application/x-www-form-urlencoded;charset=utf-8
title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3

2、multipart/form-data
这又是一个常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值,下面是示例
POST HTTP/1.1
Content-Type:multipart/form-data; boundary=----
------
Content-Disposition: form-data; name="text"
title
------
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
--------

3、application/json
application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。
4、text/xml
它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。
那么Python在调用外部http请求时,post请求怎么传请求体呢?说实话楼主只实践过【1、application/x-www-form-urlencoded】【2、multipart/form-data 】和【3、application/json】
一、application/x-www-form-urlencoded
import urllib

url = ""
body_value = {"package": "com.tencent.lian","version_code": "66" }
body_value = urllib.urlencode(body_value)
request = urllib2.Request(url, body_value)
request.add_header(keys, headers[keys])
result = urllib2.urlopen(request ).read()

二、multipart/form-data
需要利用python的poster模块,安装poster:pip install poster
代码:
from poster.encode import multipart_encode
from poster.streaminghttp import register_openers

url = ""
body_value = {"package": "com.tencent.lian","version_code": "66" }
register_openers()
datagen, re_headers = multipart_encode(body_value)
request = urllib2.Request(url, datagen, re_headers)
# 如果有请求头数据,则添加请求头
request .add_header(keys, headers[keys])
result = urllib2.urlopen(request ).read()

二、application/json
import json

url = ""
body_value = {"package": "com.tencent.lian","version_code": "66" }
register_openers()
body_value = json.JSONEncoder().encode(body_value)
request = urllib2.Request(url, body_value)
request .add_header(keys, headers[keys])
result = urllib2.urlopen(request ).read()

⑸ Python Http 请求

如果要进行客户端和服务器端之间的消息传递,我们可以使用HTTP协议请求

通过URL网址传递信息,可以直接在URL中写上要传递的信息,也可以由表单进行传递(表单中的信息会自动转化为URL地址中的数据,通过URL地址传递)

备注:已经取得资源,并将资源添加到响应中的消息体

可以向服务器提交数据,是一种比较安全的数据传递方式,比如在登录时,经常使用 POST 请求发送数据

请求服务器存储一个资源,通常需要制定存储的位置

请求服务器删除一个资源

请求获取对应的 HTTP 报头信息

可以获得当前URL所支持的请求类型

状态码:200 OK
表明请求已经成功. 默认情况下成功的请求将会被缓存

不同请求方式对于请求成功的意义如下:
GET:已经取得资源,并将资源添加到响应中的消息体.
HEAD:作为消息体的头部信息
POST:在消息体中描述此次请求的结果

请求成功对于PUT 和 DELETE 来说并不是200 ok 而是 204 所代表的没有资源 (或者 201 所代表的当一个资源首次被创建成功

以下是常见状态码及含义

⑹ python抓取网页内容时出错,UnicodeEncodeError: 'gbk' codec can't encode character '\ue4bf.....

问题是这样的,网页的数据应该是'utf-8'编码,这个可以在网页的head上面看得到,然后你爬网页的时候会把它转化成Unicode,出问题的是在print()这儿,对于print()这个函数,他需要把内容转化为'gbk'编码才能显示出来. 然后解决办法是这样,你在转化后的Unicode编码的string后面,加上 .encode('GBK','ignore').decode('GBk') 也就是先用gbk编码,忽略掉非法字符,然后再译码,是不是很有道理 应该是这样的,因为我和你遇到同样的问题,现在解决了

⑺ python http请求时使用GET返回成功,使用POST却返回失败

看来你是对于网页抓取的逻辑不太熟悉,所以自己先去看看:
【整理】关于抓取网页,分析网页内容,模拟登陆网站的逻辑/流程和注意事项

看懂了逻辑后,再去学习用工具如何抓取出来相关的逻辑:
【教程】手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(网络首页)的内部逻辑过程

最后,再学习如何用python语言实现这些逻辑:
【教程】抓取网并提取网页中所需要的信息 之 Python版
【教程】模拟登陆网站 之 Python版(内含两种版本的完整的可运行的代码)

(这里不给贴地址,自己或google搜标题即可找到我的这些帖子)

⑻ 怎样用python测result接口 post

1、Requests简介
Requests 是使用 Apache2 Licensed 许可证的 HTTP 库。用 Python 编写,真正的为人类着想。

python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。
总之,大家以后对urllib2库敬而远之就行了。来拥抱Requests吧。

通过下面方法安装requests

[python] view plain
pip install requests

2、Requests如何发送HTTP请求
非常简单,先导入requests,

[python] view plain
import requests
然后,按照下面的方法发送http的各种请求:

[python] view plain
r = requests.get('')
r = requests.post("")
r = requests.put("")
r = requests.delete("")
r = requests.head("")
r = requests.options("")

3、为URL传递参数
如果http请求需要带URL参数(注意是URL参数不是body参数),那么需要将参数附带到payload字典里头,按照下面的方法发送请求:

[python] view plain
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("",params=payload)
print r.url
通过print(r.url)能看到URL已被正确编码:

[python] view plain

注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里。

4、unicode响应内容

[python] view plain
import requests
r = requests.get('')
r.text
响应结果是:

{"message":"Hello there, wayfaring stranger. If you're reading this then you probably didn't see our blog post a couple of years back announcing that this API would Go away: Fear not, you should be able to get what you need from the shiny new Events API instead.","documentation_url":""}
Requests会自动解码来自服务器的内容。大多数unicode字符集都能被无缝地解码。请求发出后,Requests会基于HTTP头部对响应的编码作出有根据的推测。当你访问r.text之时,Requests会使用其推测的文本编码。你可以找出Requests使用了什么编码,并且能够使用r.encoding 属性来改变它

>>> r.encoding
'utf-8'

5、二进制响应内容
如果请求返回的是二进制的图片,你可以使用r.content访问请求响应体。

[python] view plain
import requests
from PIL import Image
from StringIO import StringIO
r = requests.get('')
i = Image.open(StringIO(r.content))
i.show()

6、JSON响应内容
Requests中也有一个内置的JSON解码器,助你处理JSON数据:

[python] view plain
import requests
r = requests.get('')
print r.json()
r.json将返回的json格式字符串解码成python字典。r.text返回的utf-8的文本。

7、定制请求头
如果你想为请求添加HTTP头部,只要简单地传递一个 dict 给headers 参数就可以了。

[python] view plain
import requests
import json
payload = {'some': 'data'}
headers = {'content-type': 'application/json'}
r = requests.get('', data=json.mps(payload), headers=headers)
print r.json()
注意,这里的payload是放到body里面的,所以params参数要使用json数据。

8、POST请求
就像上面‘定制请求头’中的例子,将payload序列化为json格式数据,传递给data参数。

9、POST提交文件

先制作一个text文件,名为‘report.txt’,内容是‘this is a file’。Requests使得上传多部分编码文件变得很简单:

[python] view plain
import requests

url = ''
files = {'file': open('report.txt', 'rb')}
r = requests.post(url, files=files)
print r.text
返回结果是:

[python] view plain
C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/flaskexample/postfile.py
{
"args": {},
"data": "",
"files": {
<strong>"file": "this is a file"</strong>
},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "160",
"Content-Type": "multipart/form-data; boundary=",
"Host": "",
"User-Agent": "python-requests/2.7.0 CPython/2.7.9 Windows/2012Server"
},
"json": null,
"origin": "202.108.92.226",
"url": ""
}

Process finished with exit code 0

10、POST提交表单

传递一个字典给 data 参数就可以了。数据字典在发出请求时会自动编码为表单形式:

[python] view plain
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("", data=payload)
查看响应内容:

>>> print r.text
{
"args": {},
"data": "",
"files": {},
"form": {
"key1": "value1",
"key2": "value2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "23",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "",
"User-Agent": "python-requests/2.6.0 CPython/2.7.10 Windows/7"
},
"json": null,
"origin": "124.251.251.2",
"url": ""
}

11、响应状态码

使用r.status_code返回响应的状态码。

[python] view plain
import requests

r = requests.get('')
print r.status_code
为方便引用,Requests还附带了一个内置的状态码查询对象:

[python] view plain
print r.status_code == requests.codes.ok

12、失败请求抛出异常

如果发送了一个失败请求(非200响应),我们可以通过 Response.raise_for_status()来抛出异常:

[python] view plain
import requests

bad_r = requests.get('')
print bad_r.status_code
bad_r.raise_for_status()
返回结果是:

[python] view plain
C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/flaskexample/postfile.py
404
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/flaskexample/postfile.py", line 5, in <mole>
bad_r.raise_for_status()
File "C:\Python27\lib\site-packages\requests\models.py", line 851, in raise_for_status
raise HTTPError(http_error_msg, response=self)
<strong>requests.exceptions.HTTPError: 404 Client Error: NOT FOUND</strong>

Process finished with exit code 1
如果返回码是200,则不会抛出异常,即:

[python] view plain
import requests

bad_r = requests.get('')
print bad_r.status_code
bad_r.raise_for_status()
的返回结果是:

[python] view plain
C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/flaskexample/postfile.py
200

Process finished with exit code 0

13、响应头

我们可以查看以一个Python字典形式展示的服务器响应头:
读取全部头部:

[python] view plain
r.headers
返回:

{
'content-encoding': 'gzip',
'transfer-encoding': 'chunked',
'connection': 'close',
'server': 'nginx/1.0.4',
'x-runtime': '148ms',
'etag': '""',
'content-type': 'application/json'
}
读取某一个头部字段:

[python] view plain
r.headers['Content-Type']
r.headers.get('content-type')
14、Cookies
得到响应中包含的一些Cookie:

[python] view plain
>>> url = ''
>>> r = requests.get(url)

>>> r.cookies['example_cookie_name']
'example_cookie_value'
要想发送你的cookies到服务器,可以使用 cookies 参数:

[python] view plain
>>> url = ''
>>> cookies = dict(cookies_are='working')

>>> r = requests.get(url, cookies=cookies)
>>> r.text
返回结果:

u'{\n "cookies": {\n "cookies_are": "working"\n }\n}\n'
15、重定向与请求历史

默认情况下,除了 HEAD, Requests会自动处理所有重定向。
可以使用响应对象的 history 方法来追踪重定向。
[python] view plain
>>> r = requests.get('')
>>> r.url
''
>>> r.status_code
200
>>> r.history
[<Response [301]>]
如果你使用的是GET, OPTIONS, POST, PUT, PATCH 或者 DELETE,,那么你可以通过 allow_redirects 参数禁用重定向处理:

[python] view plain
>>> r = requests.get('', allow_redirects=False)
>>> r.status_code
301
>>> r.history
[]
如果你使用的是HEAD,你也可以启用重定向:

[python] view plain
>>> r = requests.head('', allow_redirects=True)
>>> r.url
''
>>> r.history
[<Response [301]>]

⑼ 俺们是Python的小菜,求大神帮忙解决个问题

原因:

你当前使用的python文件JudgeYear.py,是用的是非UTF-8编码的,即你用的是GBK编码的。

当你运行你的JudgeYear.py时,由于你没有指定你的JudgeYear.py文件本身所采用的编码类型,所以python解析器会去按照默认的UTF-8去解析你的JudgeYear.py,但是实际上你的JudgeYear.py是用GBK编码保存的,所以就出现上面的解析的错误了。

解决办法:

两种:

做法:

在你的文件最开始部分,添加两行代码:

#!/usr/bin/python
#-*-coding:gbk-*-

这个是用来指定当前文件,即你的JudgeYear.py文件,编码为gbk的。

做法:

Notepad++VSCode,去将JudgeYear.py转换为UTF-8编码

阅读全文

与pythonhttp编码相关的资料

热点内容
服务器上如何查看服务器的端口 浏览:676
单片机服务器编译 浏览:768
单口usb打印机服务器是什么 浏览:859
战地五开服务器要什么条件 浏览:954
在word中压缩图片大小 浏览:253
javatomcat图片 浏览:417
程序员生产智能创意 浏览:65
汇和银行app怎么登录 浏览:381
腾讯服务器如何上传源码 浏览:745
单片机的原理概述 浏览:510
火控pdf 浏览:267
如何复制云服务器centos环境 浏览:984
债权pdf 浏览:303
红色番字的app怎么下载 浏览:876
云服务器流程教课 浏览:702
中国农业银行app怎么没有网 浏览:997
几率表算法 浏览:902
程序员理工科 浏览:708
企业邮箱登录收件服务器地址 浏览:560
计算机思维与算法设计的重要性 浏览:664