2016-05-05 29 views
0

我無法在響應中搜索字符串。在urllib中執行.read()之後,在urlib .read()中查找數據

使用

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

我總是失敗。

但是使用標準 如果someString在STR(響應):

我總是得到成功

當我執行打印的STR(響應)我可以看到該字符串是否存在,所以我知道這兩個功能都無法正常工作。對於打印,Python是否處理.read()響應與對字符串搜索不同?如果是這樣,我應該用什麼來搜索.read()的響應?

回答

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:

相關問題