【发布时间】:2020-07-24 05:28:04
【问题描述】:
我是 Python 新手,正在通过使用 selenium 编写应用程序来点赞 Instagram 帖子来研究 Instagram 自动化,我已经成功登录并访问了我想要喜欢的帖子的 URL,但是为了避免“不喜欢”它如果以前喜欢它,请单击它,我想先进行检查。
使用 inspect 元素,我已经能够识别 like 按钮的类,并且可以看到我可以使用几个属性:
在尝试多个帖子后,类名本身是“wpO6b”(但是我不完全确定这是否是正确的方法)。此外,在打印此类的属性时,似乎有几个属性在这里似乎很有用,例如 svg aria-label= 和 fill=(当帖子被喜欢或不喜欢)。
我可以打印该属性,但是进一步进行是一个挑战,并且希望在使用 innerHTML 输出进一步编写 if 循环或 if-else 循环等来检查参数是否与 ' 匹配时提供一些帮助不喜欢的帖子,然后运行 value.click() 来点击和喜欢帖子,否则转到列表中的下一个 URL。
代码
drv.get(ur1)
elm = drv.find_element_by_class_name("wpO6b")
print(elm.get_attribute("innerHTML"))
输出:
<svg aria-label="Unlike" class="_8-yf5 " fill="#ed4956" height="24" viewBox="0 0 48 48" width="24"><path clip-rule="evenodd" d="M35.3 35.6c-9.2 8.2-9.8 8.9-11.3 8.9s-2.1-.7-11.3-8.9C6.5 30.1.5 25.6.5 17.8.5 9.9 6.4 3.5 13.7 3.5 20.8 3.5 24 8.8 24 8.8s3.2-5.3 10.3-5.3c7.3 0 13.2 6.4 13.2 14.3 0 7.8-6.1 12.3-12.2 17.8z" fill-rule="evenodd"></path></svg>
【问题讨论】:
-
您的问题似乎有答案。使用 if 语句检查属性 aria-label 的挑战是什么?它不工作吗?
-
我无法将输出放入变量中,例如 var1 = (elm.get_attribute("innerHTML")) 以便我可以使用 if 语句处理输出。否则,如果我可以在打印功能上运行它,如果您能提供建议,那就太好了。
-
您尝试过 elm.get_attribute("aria-label") 吗? .这应该返回 - 'Unlike'
-
由于innerHTML以字符串形式返回所有属性,所以还可以检查字符串中是否包含“Unlike”。
-
感谢建议,elm.get_attribute("aria-label") 报错了。字符串建议会试一试,但我不确定如何将输出 print(elm.get_attribute("innerHTML")) 转换为我可以使用的字符串或将其放入变量中。
标签: python python-3.x selenium selenium-webdriver automation