2016-12-31 20 views
0

このWebサイトでは、無作為な時間に限られた時間に購入したいものを投稿しています。新しいURLがそのウェブページに掲載されます。クラス内の関数内で関数を呼び出す

これは、ページ上のリンク数をカウントすることでこれを行うことを予定していました(めったに更新されないため)。5分ごとにそれを5分前にチェックしてから、5分後に10 5分後にその15分前の内容を確認し、それが元のものより大きければ、私の電話にメッセージを送信してください。ここで私がこれまで持っているものだ:試験として

class url_alert: 
    url = '' 

    def link_count(self): 
     notifyy=True 
     while notifyy: 
      try: 
       page = urllib.request.urlopen(self.url) 
       soup = bs(page, "lxml") 
       links=[] 
       for link in soup.findAll('a'): 
        links.append(link.get('href')) 
        notifyy=False 
       print('found', int(len(links)), 'links') 
      except: 
       print('Stop making so many requests') 
       time.sleep(60*5) 
     return len(links) 


    def phone(self): 
     self= phone 
    phone.message = client.messages.create(to="", from_="",body="") 
     print('notified') 


    def looper(self): 
     first_count = self.link_count() 
     print('outside while') 

     noty = True 
     while noty: 
      try: 
       second_count = self.link_count() 
       print('before compare') 

       if second_count == first_count: 
        self.phone() 
        noty = False 
      except: 
       print('not quite...') 
       time.sleep(60) 


alert = url_alert() 
alert.looper() 

、私は同じようなメッセージを送信するか否かを決定するif文を設定することを決めたが、ループが実行されている上に保存しました。ルーパー関数内の関数を正しい方法で呼び出すのですか?

+0

を離れることは決してありません、tryブロックを排除する必要があるように見えますか?私はself .__ phoneの定義だけを見ています。 – MathSquared

+0

また、__phoneの最初の行は何ですか、 'self = phone'は何をすべきでしょうか? – MathSquared

+0

これは私が自分で作成したプロジェクトのための自分のクラスを書く私の最初の試みです。私はself = phoneはメッセージ変数と電話機能の間の 'リンク'のようなものだと思った。 – e1v1s

答えて

0

それが今であるとして、あなたがself.phone()が例外を取る場合、あなたはself.phoneが定義されているループ

def looper(self): 
    first_count = self.link_count() 
    while True: 
     if first_count != self.link_count(): 
      self.phone() 
      break 
     time.sleep(60) 
関連する問題