【问题标题】:Grab adjacent div or span class for Chrome.ahk Class为 Chrome.ahk 类抓取相邻的 div 或 span 类
【发布时间】:2020-09-03 14:40:12
【问题描述】:

我正在尝试创建一个脚本来获取 +1 或下一个 SPAN/DIV 元素的文本内容。我正在使用 AHK 和 Chrome.Ahk 类来帮助在 chrome 上进行网络抓取。我想出了如何在 IE DOM 中做我想要的,但是在将其转换为 chrome 时遇到了麻烦。

这是我在 IE DOM 中工作的脚本,它正在抓取下一个元素。

All:=WB.Document.GetElementsByTagName("Span") ;Get Tagname and Array value
while(aa:=All.Item[A_Index-1]){
    if(aa.InnerText="Modem MAC:"){ ;*[Grab Info from Gateway]
        msgbox % aa.ParentNode.GetElementsByTagName("Span").Item[1].InnerText
    }
}

这是我的 Chrome 脚本,它抓取第一个元素;或者,我搜索的元素:

PageInst.Evaluate("document.getElementsByTagName('Span').textContent='Modem MAC:'"))

我很困惑如何将我的 IE DOM 代码转换为我阅读时需要采用 JS 语法的 chrome 类。我如何从字面上抓取下一个 SPAN 类或 chrome 将其显示为 div。

编辑:

我终于能够弄清楚如何循环遍历每个元素。但仍然无法获得我想要的结果。但这是我想出的循环。大家还有什么想法吗?

while(PageInst.Evaluate("document.getElementsByTagName('div')['" A_Index "']")){
    msgbox % PageInst.Evaluate("document.getElementsByTagName('div')['" A_Index "'].textContent").Value
}

编辑#2:在解决这个问题一周后,我已经非常接近了,但我认为我的语法有点错误。下面的代码适用于 IE

WB := WBGet()
while(WB.Document.GetElementsByTagName("Span").Item[A_Index-1]){
    if(WB.Document.GetElementsByTagName("Span").Item[A_Index-1].InnerText="Modem MAC:"){ ;*[Grab Info from Gateway]
        msgbox % WB.Document.GetElementsByTagName("Span").Item[A_Index-1].nextSibling.GetElementsByTagName("Div")[0].innerText
    }
}

这是我改变语法的尝试,可以用另一双眼睛作为我翻译不正确的东西吗?

Tab:=PageInst
while(Tab.Evaluate("document.getElementsByTagName('Span')['" A_Index "']")){
    if(Tab.Evaluate("document.getElementsByTagName('Span')['" A_Index "'].innerText='Modem MAC:'")){
        msgbox % Tab.Evaluate("document.getElementsByTagName('Span')['" A_Index "'].nextSibling.getElementsByTagName('Div')[0].innerText").Value
    }   
}

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    感谢 Geekdude 为我指明了正确的方向,使用 JS 搜索并转换回 ahk。

    MsgBox, % PageInst.Evaluate("[].filter.call(document.querySelectorAll('span'), e=>e.innerText=='Modem MAC:')[0].nextSibling.querySelector('div').innerText").value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多