2017-06-11 101 views
2

我不是程序員。這是我的第一個程序。需要幫助寫一個簡單的程序

我想:

  • 複製網頁的變量
  • 搜索變量字符串

我得到了#1工作,但是當我搜索的字符串「2017年6月5日」,我收到下面列出的錯誤。

錯誤消息

Traceback (most recent call last): 
    File "C:\Users\Family\Documents\Python Programs\webpagecopy2.py", line 8, in <module> 
    if "June 5, 2017" in webPageCopy: 
TypeError: a bytes-like object is required, not 'str' 

下面的代碼:

# webpagecopy2.py 
import urllib.request 
webpagestring = " " 
url = 'https://www.nwbio.com/press-releases/' 
response = urllib.request.urlopen(url) 
webPageCopy = response.read() 
print(webPageCopy) 
if "June 5, 2017" in webPageCopy: 
    print ('success') 

任何意見,將不勝感激。

回答

1

只要做到這一點。

if b"June 5, 2017" in webPageCopy: 
    print ('success') 

在你的榜樣,所有你從response.read()得到的數據是字節對象,而不是字符串。你可以看到python中的對象類型如下。

print(type(webPageCopy)) # prints - <class 'bytes'> 

所以,目標字符串前添加一個前綴(b)前綴解決您的問題。

其它替代方案:

if bytes("June 5, 2017", 'utf8') in webPageCopy: 
    print ('success') 

,或者

if "June 5, 2017".encode('utf8') in webPageCopy: 
    print ('success') 
1

由於"June 5, 2017"是一個STR對象,webPageCopy是對類字節對象。

您需要將webPageCopy轉換爲str類型。

if "June 5, 2017" in str(webPageCopy): 

或者使「2017年6月5日」成爲像Wasi Ahmad所提到的那樣的字節狀對象。

if b"June 5, 2017" in webPageCopy: 
+0

感謝您的信息。有效。 –

0

webPageCopybytes對象,而不是字符串,所以要想使用in運營商有了它,你必須提供其它bytes(或字節類)對象。幸運的是,在Python中這很容易 - 只要在表示文字時使用b前綴:

if b"June 5, 2017" in webPageCopy: 
    print ('success')