AutoHotKey如何从Internet Explore中的网页获取文本

时间:2015-12-29 08:38:38

标签: internet-explorer automation autohotkey

我必须向工作中的第三方供应商网站提出一些状态请求。每天500-600次。我正在尝试自动执行此任务。目前我的代码使用以下方法。

; Helper function to get the text from current web page
CurrentScreen() {
    Sleep, 500
    MouseClick, left,  880, 240
    Send, {CTRLDOWN}a{CTRLUP}
    Sleep, 500
    Send, {CTRLDOWN}c{CTRLUP}
    Sleep, 500
    return Clipboard
}

; Helper function to read at line number X and return text
GetInformation(webpageBuffer) {
   If (A_Index == 30)
      ; Do something here and return data
}

wb := ComObjCreate("InternetExplorer.Application")
wb.Visible := True
wb.Navigate("www.someVendor.com")
IELoad(wb)

; Do a lot of clicking and searching
someText := GetInformation(CurrentScreen())

我在网上搜索了URLDownloadToFile并阅读了文档here。但这不起作用,因为我需要的供应商网站信息是通过表单请求的,它没有我可以使用的静态网站链接。

我当前的方法工作,但它相当慢,因为我已经为我必须阅读的每个页面使用额外的2-3秒,并且我的程序将在运行时闪烁蓝色和白色(来自副本和糊)。是否有其他解决方案从Internet Explorer页面加载读取文本,不使用复制,粘贴,读取剪贴板方法?

2 个答案:

答案 0 :(得分:2)

如果您知道包含所需文本的确切元素名称,请使用

var := wb.Document.getElementByID(Element_Name).innerText

检索文本。如果你不知道变量名,但知道索引号,i,或者可以遍历索引号,特别是寻找某些文本,有类似的东西:

wb.document.all[i].innerText

H个,

答案 1 :(得分:2)

您可以更进一步直接与API通信。这样更快,更可靠,可以完全隐藏在后台,而不会影响用户体验。

你只需要找出3件事:

  • 提交的表单是什么?
  • 表单使用什么方法? (POST,GET,...)
  • 提交数据的表单是哪个URL?

您可以通过查看HTML代码或使用浏览器的开发人员工具实际记录表单提交或使用postman或像Fiddler这样的独立程序来查找。

以下是最终结果的示例:

@Resource
private List<SomeInterface> list;

你也可能想看看这个:How to do logins using the WinHttpRequest COM?