導航:首頁 > 編程語言 > 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編碼相關的資料

熱點內容
我的世界如何查看伺服器種子pc 瀏覽:282
linuxlamp編譯安裝 瀏覽:609
枚舉演算法ppt 瀏覽:184
cmd查看進程命令 瀏覽:956
手機內怎麼刪除APP 瀏覽:834
魚群和鳥群演算法區別 瀏覽:93
pdf尺寸設置 瀏覽:211
android訪問本地伺服器 瀏覽:512
程序員相親被刪除微信 瀏覽:790
centos命令窗口 瀏覽:596
編譯器有幾個好用的 瀏覽:500
資料庫和網站如何搭載伺服器 瀏覽:154
網路流理論演算法與應用 瀏覽:795
java和matlab 瀏覽:388
釘釘蘋果怎麼下app軟體 瀏覽:832
php網站驗證碼不顯示 瀏覽:859
鋁膜構造柱要設置加密區嗎 瀏覽:344
考駕照怎麼找伺服器 瀏覽:885
阿里雲伺服器如何更換地區 瀏覽:972
手機app調音器怎麼調古箏 瀏覽:503