2013-08-17 50 views
0

我希望你能告訴我我的webscraper出錯的地方。如果聲明不適用於刮刀

我想要做的是在頁面上某個字符串(「Sorry,Gruen Fan」)發生變化時收到通知。我能夠拉入字符串,但是,「If」函數似乎不起作用 - 它的輸出應該是「Text in in」。下面的代碼:

from bs4 import BeautifulSoup 
from urllib import urlopen 
import re 

urls= ["http://www.abc.net.au/tv/programs/gruen-nation/"] 

for url in urls: 
    webpage = urlopen(url).read() 
    FindTitle = re.compile('\t\t\t\t(.*)\.<BR><BR>') 
    FindTitle = re.findall(FindTitle,webpage) 
    print FindTitle[0] 
    print ' ' 

if 'Sorry, Gruen fan' in FindTitle: 
    print("Text is in") 
else: 
    print("Text isn't in") 

預先感謝您的時間,

薩姆。

回答

0

FindTitle是一個列表。該字符串不在列表中,因此您獲得False

你應該檢查它是否在字符串中的列表,而不是:

if 'Sorry, Gruen fan' in FindTitle[0]: 

而且,你不需要正則表達式,如果你只是要檢查的字符串:

from urllib import urlopen 

urls = ["http://www.abc.net.au/tv/programs/gruen-nation/"] 

for url in urls: 
    html = urlopen(url).read() 

    if 'Sorry, Gruen fan' in html: 
     print("Text is in") 
    else: 
     print("Text isn't in") 
+0

輝煌,謝謝你的幫助。更簡單=更好。 –