在urlib .read()中查找数据

时间:2016-05-05 07:05:35

标签: python-3.x urllib

从urllib执行.read()后,我无法在响应中搜索字符串。

使用

response = urlopen(req).read()
    if str(response).find(someString) != -1 :
        print ("Success")
    else:
        print ("Fail")

我总是失败。

然而使用标准     如果str(响应)中的someString:

我总能获得成功

当我执行打印str(响应)时,我可以看到字符串是否存在,所以我知道这两个函数都没有正常工作。 Python对处理的.read()响应的处理方式与字符串搜索的处理方式不同吗?如果是这样,我应该用什么来搜索来自.read()的响应?

1 个答案:

答案 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:格式。