【发布时间】:2020-10-15 17:07:29
【问题描述】:
大家,我是编程新手,所以请考虑我的问题可能不是那么聪明。
我正在研究python,但与此同时,我正在查看一些代码来理解它。
我正在“创建”或更好地“应对”来自 youtube 的 Instagram 机器人。
现在我将在此处附上代码,但总而言之,我正在尝试从 Instagram 获取一些主题标签,并为每个主题标签的第一篇帖子点赞和评论。
每次有人禁用 cmets 时都会发生错误。我正在考虑使用'try'和'except'来处理这个错误。但我不确定这样做的正确方法是什么
def getTopPosts(self):
for hashtag in self.hashtags:
self.browser.get(
'https://www.instagram.com/explore/tags/' + hashtag + '/')
time.sleep(2)
links = self.browser.find_elements_by_tag_name('a')
def condition(link): return '.com/p/' in link.get_attribute('href')
valid_links = list(filter(condition, links))
for i in range(0, 9):
link = valid_links[i].get_attribute('href')
if link not in self.links:
self.links.append(link)
def execute(self):
for link in self.links:
self.browser.get(link)
time.sleep(1)
self.browser.execute_script(
"window.scrollTo(0, document.body.scrollHeight);")
time.sleep(1)
self.comment()
time.sleep(2)
self.like()
self.price += 0.02
sleeptime = random.randint(18, 28)
time.sleep(sleeptime)
def comment(self):
def comment_input(): return self.browser.find_element_by_xpath(
'/html/body/div[1]/section/main/div/div[1]/article/div[2]/section[3]/div/form/textarea')
comment_input().click()
comment_input().clear()
comment = random.choice(self.comments)
for letter in comment:
comment_input().send_keys(letter)
delay = random.randint(1, 7) / 30
time.sleep(delay)
comment_input().send_keys(Keys.RETURN)
现在我的问题是我应该在函数comment() 中使用'try' 还是在函数execute(self) 中调用它时使用'try'?
我的目标是,如果注释函数中的代码无法在没有错误的情况下运行,请跳过并继续,以便程序不会因此错误而崩溃。
我希望这个问题是可以理解的。 因为我是新手,所以我要求您通过分享一个示例来回复,该示例可能可以帮助我理解一般如何执行此操作也以供将来使用,只要包含示例,指向另一个来源的链接也可能很好。
【问题讨论】:
-
我不喜欢使用 try - except 子句来隐藏错误,除非您确切知道错误是如何以及为什么会导致的。如果没有,您将抑制一个错误,该错误可能稍后在代码中导致新的错误。顺便说一句,您没有发布错误是什么,完整的 Traceback 会为可能想要帮助您的人提供线索。
-
正如Robust exception handling 上的博客指出的那样,异常是最佳实践是“在知道如何处理异常的级别上处理异常”。在这种情况下,最知道如何处理异常的是注释还是执行?如果你在评论中处理它,那么你可以引发一个不同的异常来执行以提醒它忽略评论。
标签: python python-3.x web-scraping bots instagram