利用網(wǎng)上現(xiàn)成的的接口,用python練習(xí)了下
(又碰到了中文編碼問題了:獲取的頁(yè)面源碼 編碼就是整不成中文)

圖片.png
此處選擇的是 getSupportCity(獲取支持的城市),是一個(gè)查看系統(tǒng)支持哪些城市的接口方法。
進(jìn)入頁(yè)面后滾動(dòng)到最下面看到如下圖的內(nèi)容
先來看看GET,上面是請(qǐng)求,下面是服務(wù)器的返回內(nèi)容。

GET 和POST 請(qǐng)求.png
寫好python代碼后,運(yùn)行發(fā)現(xiàn)參數(shù)輸入all 或者 不輸 是OK的,輸入中文城市就顯示不了,中文依舊是bytes類型的,我用 str 進(jìn)行了轉(zhuǎn)換
# -*- coding: utf-8 -*-
# __author__ = 'Carina'
from urllib.request import urlopen
from urllib.request import Request
url = 'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName='
print(type(url)) # 輸出URL的類型
string = str('上海'.encode('utf-8'))
print(type(string)) # 輸出參數(shù)的類型
url_all = url + string
print(url_all) # 輸出拼接后的URL
req = Request(url_all) # 創(chuàng)建一個(gè)Request對(duì)象 并賦給變量req
data = urlopen(url_all).readlines() # 打開網(wǎng)址并讀取數(shù)據(jù)
print(type(data))
print(data)

顯示不了中文.png
接下來說下所遭遇的坑
1、如參數(shù) string為中文,不進(jìn)行str轉(zhuǎn)換的話,運(yùn)行會(huì)報(bào)錯(cuò)(類型不一樣的變量不能進(jìn)行拼接)

類型不一樣的變量不能進(jìn)行拼接.png
2、參數(shù) string為中文,不進(jìn)行encode轉(zhuǎn)換,運(yùn)行報(bào)錯(cuò)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 70-71: ordinal not in range(128)
尋求度娘,說在文件頭部加入以下代碼
import sys
reload(sys)
sys.setdefaultencoding('utf-8')()
但這方法不適用于3.X,所以沒用:Python3 已經(jīng)取消了str, 讓所有的字符串都是 unicode
寫在最后的話
如果你用的也是3,知道如何能顯示中文的話,可以留言或者直接簡(jiǎn)信也可以,萬分感謝!