3 回答

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個贊
由于在使用變量之前不需要聲明它,因此在嘗試對變量進(jìn)行操作時需要格外小心。
問題是這一行status1 = conn1.read()
Here,conn1.read()
返回網(wǎng)頁的內(nèi)容,即源html作為字節(jié)序列(類似于字符串)。將數(shù)字與字符序列進(jìn)行比較是未定義的操作;因此,python 引發(fā)了一個錯誤。
您可以設(shè)計(jì)一個解析器來檢索您需要的信息。例如,您可以使用將擁有的字節(jié)轉(zhuǎn)換為字符串encode()
。然后是你想要find()
的索引status1
。然后您可以使用 substring 獲取status1
字符串,最后將其轉(zhuǎn)換為數(shù)字。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個贊
status1
以字節(jié)形式返回,需要格式化。
在睡眠之前打?。╯tatus1)或使用調(diào)試器檢查該值。我的猜測是,您需要對收到的回復(fù)進(jìn)行更多分析。
該庫requests
是 urllib 的包裝器,通常更有用,因此您不需要所有這些步驟。
response = requests.get(url) response.json # probably has what you need

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊
該urllib.request.urlopen()
函數(shù)返回一個HTTPResponse
對象:
import urllib.request
connection = urllib.request.urlopen("https://stackoverflow.com/")
type(connection) # <class 'http.client.HTTPResponse'>
read
對象的方法(?HTTPConnection
您使用語句調(diào)用status1 = conn1.read()
)在文檔中描述如下:
讀取并返回響應(yīng)正文,或直到下一個 amt bytes。
(強(qiáng)調(diào)我的)
因此,您收到類型錯誤的原因是HTTPConnection.read
return?bytes
,它無法與float
.?您需要將 轉(zhuǎn)換bytes
為float
.?如果conn1.read()
只是以字節(jié)形式返回一個數(shù)字,您可以使用float(status1)
,但我高度懷疑status1
其格式有點(diǎn)復(fù)雜,因此您需要進(jìn)行一些挖掘以弄清楚您到底想要從中提取數(shù)據(jù)的內(nèi)容和方式它。
您可能需要研究像BeautifulSoup這樣的 HTML 解析器來幫助您提取您要查找的數(shù)據(jù)。
添加回答
舉報(bào)