我正在尝试通过 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上发帖,所以查了下,不知道写的对不对
如有遗漏请告知。谢谢!
我不知道如何通过 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 获取元素?
希望我的回答能帮到您