从urllib执行.read()后,我无法在响应中搜索字符串。
使用
response = urlopen(req).read()
if str(response).find(someString) != -1 :
print ("Success")
else:
print ("Fail")
我总是失败。
然而使用标准 如果str(响应)中的someString:
我总能获得成功
当我执行打印str(响应)时,我可以看到字符串是否存在,所以我知道这两个函数都没有正常工作。 Python对处理的.read()响应的处理方式与字符串搜索的处理方式不同吗?如果是这样,我应该用什么来搜索来自.read()的响应?
答案 0 :(得分:0)
所以我终于找到了用urllib搜索其他问题的答案。
问题归结为.read()
函数以字节格式返回。因此,为了搜索,您必须改为编码。由于我正在读取的数据总是返回字符集,我使用了以下代码:
response = urlopen(req)
out = response.read().decode(response.headers.get_content_charset())
if out.find( someString ) != -1:
print ( "Success" )
else:
print ( "Fail" )
如果收到的标题不包含字符集,则可以指定它而不是从标题中提取。我希望我现在甚至可以切换回标准if someString in out:
格式。