如何使用 Javascript 扩展 Google PAA 部分?

How to use Javascript to expand Google PAA section?

提问人:xhammer 提问时间:10/28/2023 最后编辑:Andrew Mortonxhammer 更新时间:10/29/2023 访问量:34

问:

我想使用 javascript 从 google 的 People Also Ask 部分获取问题和答案(但在使用 executequery 的 vb.net cefsharp 浏览器中)。需要单击该部分才能展开,然后我希望从中获取问题和答案。

问题部分的 HTML 代码是这样的:

<div jsname="tJHJj" class="dnXCYb" aria-controls="_mtM8ZYO5IueaseMPheiNoAM_34" aria-expanded="false" role="button" tabindex="0" jsaction="AWEk5c">
    <div jsname="lN6iy" class="JlqpRe"><span class="JCzEY ZwRhJd"><span class="CSkcDe">Does Semrush provide free certification?</span></span>
    </div>
    <div jsname="Q8Kwad" class="aj35ze"></div>
    <div jsname="pcRaIe" class="L3Ezfd" data-ved="2ahUKEwiD7sSetpiCAxVnTWwGHQV0AzQQuk56BAgzEAI"></div>
    <div jsname="gwzXIc" class="ru2Kjc" data-ved="2ahUKEwiD7sSetpiCAxVnTWwGHQV0AzQQ36YDegQIMxAD"></div>
</div>

我想单击上面的部分,以便该部分展开,然后将答案复制到其中,但我无法打开它。

我尝试了以下方法:

ChromiumWebBrowser1.ExecuteScriptAsync("document.getElementsByName('q')[0].value='semrush';document.getElementsByName('q')[0].focus();document.getElementsByName('q')[0].click();")

ChromiumWebBrowser1.ExecuteScriptAsync("document.getElementsByTagName('span')[0].click();")

'ChromiumWebBrowser1.EvaluateScriptAsync("document.querySelectorAll(""div[aria-expanded=""false""])"").forEach(button=>button.click())")

'ChromiumWebBrowser1.ExecuteScriptAsync("(function(){ document.querySelector('.div[aria-expanded=""false""])').click(); })();")

Dim qry As String = "$(document).ready(function(){
  $(""[aria-expanded]"").click(); });"
ChromiumWebBrowser1.ExecuteScriptAsync(qry)

最后 4 个命令不起作用。前两个工作得很好,我也可以单击其他各种按钮,但这只是提到的部分,我无法让 JavaSscript 单击所需的部分。我认为错误在于我试图达到它的方式。

任何建议都会非常有帮助。

javascript vb.net jquery-selectors cefsharp queryselector

评论

0赞 Andrew Morton 10/29/2023
我试图改进问题的格式,但可能需要您进行更多调整才能正确。
0赞 amaitland 10/29/2023
首先让你的 js 直接在 devtools 中运行。github.com/cefsharp/CefSharp/wiki/......
1赞 xhammer 11/3/2023
@amaitland是的,谢谢你。让它工作。JS 有问题,修复后现在一切似乎都很好。谢谢。

答: 暂无答案