在类

时间:2016-12-31 00:12:07

标签: python class beautifulsoup

所以这个网站会在一天中的随机时间发布我想要购买的东西,时间有限,我想写一些东西,当一个新的网址被发布到我的手机时发送一条消息给我的手机那个网页。

我计划通过计算页面上的链接数量来计算(因为它很少更新)并且每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语句来确定是否将消息发送为相等但循环保持运行。我是否以正确的方式调用looper函数中的函数?

1 个答案:

答案 0 :(得分:0)

看起来你需要消除try块,就像现在一样,如果self.phone()接受异常,你永远不会离开循环

def looper(self):
    first_count = self.link_count()
    while True:
        if first_count != self.link_count():
            self.phone()
            break
        time.sleep(60)