我是一个学习者,我在Python3.7中工作。在
据我所知,find函数应该指示字符串的索引位置。在
当我的输入是一个像
myString='Blabla<body>blabla'.
现在
^{pr2}$返回6。 令人惊叹的。 但是当我从网页导入字符串时,我得到了错误
TypeError: argument should be integer or bytes-like object, not 'str'
我完全同意,但我不明白为什么这个论点是str
。在
我的代码:
import ssl, urllib.request
url = 'http://help.websiteos.com/websiteos/example_of_a_simple_html_page.htm'
response = urllib.request.urlopen(url)
Content = response.read()
startposition = Content.find('<body>')
print(startposition)
Content
是bytes
类型,因此Content.find
的参数必须是bytes
或{如何修复:将
str
转换为bytes
:因为这就是您传递的:
'<body>'
是一个文本str
对象。在您询问之前,Content
是一个bytes
对象,它必须被解码(使用应该在响应中声明的编码)以获得正确的字符串。在现在一个更简单的解决方案是使用第三部分python请求库,它将为您处理这些烦人的细节,这是由
urllib
文档本身推荐的。在另外,如果你想解析HTML,一定要使用一个合适的HTML解析器(beauthoulsoup是推荐的选择,如果你要处理可能格式错误的HTML,这是目前最常见的情况)。在
这里的内容是一个bytes对象。您试图通过bytes对象搜索字符串。通过更改行将内容转换为字符串
到
^{pr2}$相关问题 更多 >
编程相关推荐