Python selenium find_elements 查找按钮链接的方法

问题描述 投票:0回答:1

我正在尝试通过 Selenium 抓取 Instagram 评论。

我必须按回复按钮来抓取所有评论。 (“답글보기”)

所以,我试图找到按钮的 xpath,但失败了。

这是我的尝试

reply_links = driver.find_elements(By.XPATH, "//button[@class='_a9yi']")
reply_links_v2 = driver.find_elements(By.XPATH, '//button[@class="_acan _acao _acas _aj1- _a9yi"]')
reply_links_v3 = driver.find_elements(By.XPATH, '//button[contains(text(),"답글 보기")]')
reply_links_v4 = driver.find_elements(By.XPATH, '//button[@class="_acan _acao _acas _aj1-"]')

输出

[]
[]
[]
[<selenium.webdriver.remote.webelement.WebElement (session="4322025fb4271b9a32de3eb510cde52c", element="431ff43b-673a-40d7-9f42-dc91d3ed09e2")>, <selenium.webdriver.remote.webelement.WebElement (session="4322025fb4271b9a32de3eb510cde52c", element="39f44102-6c24-47eb-b8fa-94d61bb4cdc3")>, <selenium.webdriver.remote.webelement.WebElement (session="4322025fb4271b9a32de3eb510cde52c", element="a8a4dc3b-fce0-4633-bc39-27200f4ea40a")>]

第一个、第二个、第三个Xpath表达式定位元素失败,导致返回一个空列表。 最后一个返回值和点击工作,但它包含我不想要的按钮(例如,关注按钮)。

这是我的按钮的 HTML

<div class="_ab8w  _ab94 _ab99 _ab9f _ab9k _ab9p _abcm">
<button class="_acan _acao _acas _aj1-" type="button">
<div class="_a9yh">
</div><span class="_a9yi">답글 보기(1개)</span></button></div>

第一次在Stack Overflow上发帖,所以查了下,不知道写的对不对

如有遗漏请告知。谢谢!

python html selenium-webdriver web-crawler
1个回答
0
投票

我不知道如何通过 Selenium 代码解决这个问题,但是 selenium 可以调用 JavaScript 代码来做一些事情,所以你可以使用 JavaScript 来解决这个问题,首先你可以通过获取外部 div 元素

var outterdiv = document.querySelector("div[class='_ab8w  _ab94 _ab99 _ab9f _ab9k _ab9p _abcm']")
,然后你可以通过这段JavaScript代码获取按钮:
var button = outterdiv.querySelector("button")
。你可以调用按钮的click函数:
button.click()
.

貌似每次刷新页面都会改变那些类,所以有一种在JavaScript中使用xpath的方法,你可以用它来替换第一个JavaScript代码。 有没有办法在 Selenium WebDriver 中使用 JavaScript 通过 XPath 获取元素?

希望我的回答能帮到您

© www.soinside.com 2019 - 2024. All rights reserved.