如何从c#页面

时间:2016-05-31 15:34:06

标签: c# asp.net web-scraping screen-scraping web-controls

我正在为Windows应用程序中的屏幕报废应用程序

工作

我可以使用浏览器方法自动浏览登录页面和所有页面,有时必须使用“.Click”触发某些页面上的按钮。

这是问题所在。当我做最后的“点击”以获取我的数据时,网络浏览器打开一个新的浏览器窗口(弹出窗口),其中包含另一个链接按钮,我必须使用c#单击此链接按钮以获取我的最终数据。

如何访问新窗口(弹出窗口)进行刮擦?

我正在使用下面的代码,此代码在新的弹出窗口中打开URL。

 HtmlElement toollinkbutton = WebBrowser1.Document.Window.Document.Body.Document.GetElementsByTagName("a")[48];
toollinkbutton .InvokeMember("click");

1 个答案:

答案 0 :(得分:1)

新窗口可能是由于目标=" _blank"或javascript并使用InvokeMember将导致新窗口打开。向WebBrowser控件NewWindow事件添加处理程序,并通过调用Navigate()来处理单击。

private string url = "";

public Form1()
{
    InitializeComponent();
    WebBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
    WebBrowser1.NewWindow += new System.ComponentModel.CancelEventHandler(webBrowser1_NewWindow);
}

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    HtmlElementCollection links = WebBrowser1.Document.Links;
    foreach (HtmlElement var in links)
    {
        var.AttachEventHandler("onclick", LinkClicked);
    }
}

private void LinkClicked(object sender, EventArgs e)
{

    HtmlElement link = WebBrowser1.Document.ActiveElement;
    url = link.GetAttribute("href");
}

void webBrowser1_NewWindow(object sender, System.ComponentModel.CancelEventArgs e)
{
    WebBrowser webBrowser = (WebBrowser)sender;
    HtmlElement link = webBrowser.Document.ActiveElement;
    Uri urlNavigated = new Uri(link.GetAttribute("href"));
    WebBrowser1.Navigate(url);
    e.Cancel = true;
}