3 回答
TA贡献1859条经验 获得超6个赞
由于在使用变量之前不需要声明它,因此在尝试对变量进行操作时需要格外小心。
问题是这一行status1 = conn1.read()
Here,conn1.read()
返回网页的内容,即源html作为字节序列(类似于字符串)。将数字与字符序列进行比较是未定义的操作;因此,python 引发了一个错误。
您可以设计一个解析器来检索您需要的信息。例如,您可以使用将拥有的字节转换为字符串encode()
。然后是你想要find()
的索引status1
。然后您可以使用 substring 获取status1
字符串,最后将其转换为数字。
TA贡献1820条经验 获得超10个赞
status1
以字节形式返回,需要格式化。
在睡眠之前打印(status1)或使用调试器检查该值。我的猜测是,您需要对收到的回复进行更多分析。
该库requests
是 urllib 的包装器,通常更有用,因此您不需要所有这些步骤。
response = requests.get(url) response.json # probably has what you need
TA贡献1802条经验 获得超5个赞
该urllib.request.urlopen()
函数返回一个HTTPResponse
对象:
import urllib.request
connection = urllib.request.urlopen("https://stackoverflow.com/")
type(connection) # <class 'http.client.HTTPResponse'>
read
对象的方法( HTTPConnection
您使用语句调用status1 = conn1.read()
)在文档中描述如下:
读取并返回响应正文,或直到下一个 amt bytes。
(强调我的)
因此,您收到类型错误的原因是HTTPConnection.read
return bytes
,它无法与float
. 您需要将 转换bytes
为float
. 如果conn1.read()
只是以字节形式返回一个数字,您可以使用float(status1)
,但我高度怀疑status1
其格式有点复杂,因此您需要进行一些挖掘以弄清楚您到底想要从中提取数据的内容和方式它。
您可能需要研究像BeautifulSoup这样的 HTML 解析器来帮助您提取您要查找的数据。
添加回答
举报