请耐心等待,因为这可能不像您想象的那样标准。或者也许会。我只能希望。
我创建了一个使用两个Web浏览器来读取和比较数据的工具。它在我自己的计算机上运行得很好。
编译完成后,我一直在不同的VPC和VPS上运行它,第一次加载数据并读取没问题。那很好(没有问题)。
第二个浏览器加载。所有数据都在那里。但我把信息转储到一个列表框和一个数组(与第一个浏览器相同,当我在本地运行它时,它都可以正常工作)。
两种浏览器使用相同的方式工作:
For Each element As HtmlElement In Me.BROWSERNAME.Document.GetElementsByTagName("span")
找到它想要的统计数据。
我无法理解为什么一个浏览器可以工作而不是另一个浏览器。它每次都在本地工作,但是一旦我编译它并把它放在别处,第二个就不会读。
我能看到的两者之间的唯一区别是使用了一些正则表达式:
readdata = System.Text.RegularExpressions.Regex.Replace(readdata, "[^\d]", " ")
还有一个字符串来分解每一行。
Dim parts As String() = readdata.Split(New String() {Environment.NewLine},
StringSplitOptions.None)
所以我唯一的假设就是使用一些在其他系统上不起作用的东西。
其他系统都安装了最新的.net。我已经摆弄了正则表达式来改变浏览器仿真设置(所以vb.net浏览器可以加载但我已经在本地完成了相同的工作)。
我的进口商品:
Imports System.IO
Imports Microsoft.Win32
Imports System.Threading
但我假设这些都将包含在build或.net框架中。也许这就是我出错的地方,但我不知道如何包含它们。
我正在为“任何cpu”构建。我曾尝试将.exe复制到其他系统,我尝试使用发布部分将其安装到其他系统上,结果相同。
任何建议都会非常感激,这让我疯狂。
编辑:
经过一些进一步测试后,一些信息正在从第二个浏览器中读取(与本地相同)。但是第二部分使用了上面的stringsplit和regex代码,所以我很确定它不会过去。