python - 使用“try”和“exept”处理 In-stagram 机器人中的错误
问题描述
大家,我是编程新手,所以请考虑我的问题可能不是那么聪明。
我正在研究python,但与此同时,我正在查看一些代码来理解它。
我正在“创建”或更好地“应对”来自 youtube 的 Instagram 机器人。
现在我将在此处附上代码,但总而言之,我正在尝试从 Instagram 获取一些主题标签,并对每个主题标签的第一篇帖子进行点赞和评论。
每次有人禁用评论时都会发生错误。我正在考虑使用'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)中调用它?
我的目标是,如果注释函数中的代码无法在没有错误的情况下运行,请跳过并继续,以便程序不会在此错误时崩溃。
我希望这个问题是可以理解的。因为我是新手,所以我要求您通过分享一个示例进行回复,该示例可能可以帮助我理解如何在一般情况下执行此操作以供将来使用,只要包含示例,指向另一个来源的链接也可能很好。
解决方案
在可能的情况下,最好避免创建不必要的异常。
如果使用 Instagram API,您可以使用该is_comment_enabled
属性(请参阅文档)。
就像是:
def execute(self):
[...]
if self.is_comment_enabled:
self.comment()
[...]
但是如果你正在抓取,try/except 块可能是最简单的:
def comment(self):
try:
[...]
except:
return false
祝你好运!
推荐阅读
- reactjs - Material DateTimePicker onChange Typescript 不匹配错误
- r - R中两次之间的差异
- powershell - 使用 PowerShell 复制事件查看器日志并在成功复制时将其删除
- react-native - 用一种字体包裹整个 React Native 应用程序
- python - Python time_ns 时间差在 1 毫秒 (10^6 ns) 以下时为 0
- marathontesting - 马拉松 | JNLP 应用程序上的 Java 驱动程序 - 没有可用的顶级窗口
- javascript - jQuery Select Nested List - 目标同级列表项
- python - 使用 Python 函数检查文本中的特殊字符
- visual-studio-code - 如何在 VSCode 中绑定 ctrl-alt-up/down 以像 VS2019 一样工作?
- ios - 科尔多瓦插件相机未在 iPad 电容器上显示画廊