我编写了一个程序,其中包含一个嵌入式Web浏览器,该浏览器加载一个网站,该网站有一个不断变化的部分(该部分每周更改约2次而且没有常规的计时模式)我想搜索特定部分在指定的时间间隔刷新网页后打开网页源代码。
我发现很多类似于我的问题,但这就是我想要的,而这些问题没有:
所以这是我正在尝试的程序:
1-在嵌入式网络浏览器中打开网站
2-用户登录后,在程序中按下按钮,它隐藏了嵌入式 Web浏览器并开始在一个时间间隔内刷新页面(如 每分钟)并搜索特定代码是否在源中更改 打开网页
任何其他/更好的想法赞赏
谢谢
答案 0 :(得分:0)
很多年前,我写了一个应用程序,将几个页面的论坛帖子重新整合为一个,我也在努力解决登录问题,并认为只能使用嵌入式浏览器。事实证明,可以在.NET中使用System.Net来处理需要登录的网页,因为您可以将cookie拉出来并随身携带。我建议你这样做,远离嵌入式浏览器。
不幸的是我最初用C#编写代码,但由于它的.NET主要是基于类的,所以移植它不会太困难。
基本原则
在登录时找出POST中包含的信息,您可以在Chrome(开放模式)(F12)上执行此操作。将其转换为byteArray,将其发布到页面,存储cookie并稍后再使用cookie数据进行另一次调用。您需要一个类变量来保存cookie。
<强>代码:强>
private void Login()
{
byte[] byteArray = Encoding.UTF8.GetBytes("username=" + username + "&password=" + password + "&autologin=on&login=Log+in"); // Found by investigation
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("yourURL");
request.AllowAutoRedirect = false;
request.CookieContainer = new CookieContainer();
request.Method = "POST";
request.ContentLength = byteArray.Length;
request.ContentType = "application/x-www-form-urlencoded";
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
if (((HttpWebResponse)response).StatusCode == HttpStatusCode.Found)
{
// Well done, your login has been accepted
loginDone = true;
cookies = request.CookieContainer;
}
else
{
// If at first you don't succeed...
}
response.Close();
}
private string GetResponseHTML(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AllowAutoRedirect = false;
// Add cookies from Login()
request.CookieContainer = cookies;
request.ContentType = "application/x-www-form-urlencoded";
WebResponse response = request.GetResponse();
string sResponse = "";
StreamReader reader = null;
if (((HttpWebResponse)response).StatusCode == HttpStatusCode.OK)
{
reader = new StreamReader(response.GetResponseStream());
sResponse = reader.ReadToEnd();
reader.Close();
}
response.Close();
return sResponse;
}
希望有所帮助。
答案 1 :(得分:0)
我不得不换成C#,然后找到了我要找的东西:
string webPageSource = webBrowser1.DocumentText;
这给了我在 webBrowser1 控件中打开的网页源。