我正在开发一个程序,该程序可以在浏览器中自动执行任务,例如输入文本、单击等,现在在 Visual Studio 2010 中使用 Web 浏览器工具时一切正常。
我想知道的是我应该如何转换所有这些以便我可以使用发送请求而不是浏览器?我听说如果您要使用多线程,它会更高效、更好,但是我有很多代码现在已经可以工作了,我不确定我应该如何在不刮掉很多代码的情况下做到这一点。
我正在开发一个程序,该程序可以在浏览器中自动执行任务,例如输入文本、单击等,现在在 Visual Studio 2010 中使用 Web 浏览器工具时一切正常。
我想知道的是我应该如何转换所有这些以便我可以使用发送请求而不是浏览器?我听说如果您要使用多线程,它会更高效、更好,但是我有很多代码现在已经可以工作了,我不确定我应该如何在不刮掉很多代码的情况下做到这一点。
您将使用 HttpWebRequest / HttpWebResponse 向服务器发送 HTTP 请求,然后使用 HttpWebResponse.GetResponseStream() 检索文档正文。然后使用 HTML 框架(例如HtmlAgilityPack)解析 HTML 并获取文档的 DOM 图,然后您可以遍历 DOM 以提取数据并将任何后续请求的请求主体制作回服务器。
如果响应文档是有效的 XML(例如 XHTML1.1),那么您可以通过将其加载到 System.Xml.XmlDocument 中来节省一些时间,但实际上 HTML 文档经常包含错误,并且像 HtmlAgilityPack 这样的框架比 System.xml 更能容忍解析器错误。 xml。
对于多线程,您可以同时触发多个 HttpWebRequest(每个请求都与自己的线程相关联,或者使用 Async 方法)。请注意,您需要修改一些设置来覆盖 .NET 网络库中存在的“每个主机两个并发 HTTP 请求”策略。