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