因此,我一直在尝试使用python中的硒在网页上搜索特定的关键字,但似乎无法弄清楚如何在特定区域内搜索特定的文本。如图所示,当我在Chrome中搜索单词“ Sim”时,会突出显示几个斑点。红色区域是我要查找代码的唯一位置。我使用了xpath来标识文本,因为其他所有内容均不可用。
到目前为止的代码是:
else:
print("Nothing here yet 1")
if driver.find_elements_by_xpath("//*[contains(text(), 'Sim')]"):
login_to_reply = driver.find_element_by_xpath("//body/div[@id='app']/main/div[@id='content']/div/div/div/div/div/div/article/header[1]")
login_to_reply.click()
time.sleep(5)
如果有人能帮助我,让我知道我不了解的地方,我将非常感谢,谢谢。
图片:https://i.stack.imgur.com/nJOpU.png
编辑:来自其他答案的更多图像:
根据评论中的其他信息,要在页面的“第一篇文章”中搜索关键字,可以使用以下xpath:
(//article)[1]//div[@class='Post-body'][contains(normalize-space(),'point')]
关键位是:(//article)[1]
-将更多标识符锁定在第一个[1]
定位的article
标签内。其余的只是减少了dom中的重复,并发现了嵌套嵌套标签的人的文本。
根据提供的链接,该链接仅与顶部帖子匹配。您可以看到搜索关键字“ point”即使在多个帖子中也仅获得1次点击...
可以将文本“点”换成“ sim”或任何您想要过滤的内容。
看着您的代码,我还有更多建议:
1 /您用于“登录以回复”的第二个xpath不好。像这样的长复制xpath通常容易产生麻烦。您可以使用与上述相同的技术来单击该文章框中的回复:
(//article)[1]//button[span[text()='Reply']]
2 /
您还需要注意,该行将无法按预期工作。
if driver.find_elements_by_xpath("//*[contains(text(), 'Sim')]"):
如果未找到该元素,则它不会返回false-它会返回NoSuchElement异常并失败(并停止)脚本。
您需要将其作为try / except块
它需要看起来像这样:
try:
driver.find_elements_by_xpath("(//article)[1]//div[@class='Post-body'][contains(normalize-space(),'point')]"):
login_to_reply = driver.find_element_by_xpath("(//article)[1]//button[span[text()='Reply']]")
login_to_reply.click()
time.sleep(5)
except:
print("Text was not found")
我没有运行此程序,但是如果无法运行,请告诉我,我会再看一次。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句