Извлечь строку из веб-страницы - PullRequest
0 голосов
/ 11 ноября 2018

Мне нужно иметь ярлык, где его текст берется с веб-страницы, но из-за сомнений это не сработает, мне кажется, что веб-папка вернула ноль, но местоположение правильное.

    WebBrowser JOJO = new WebBrowser();
string Tesla = "";
                        JOJO.Url = new Uri("https://finance.yahoo.com/quote/TSLA?p=TSLA");
                        var sal = JOJO.Document.GetElementsByTagName("div");// this return null
                        foreach (HtmlElement link in sal)
                        {
    if (link.GetAttribute("className") == "D(ib) Mend(20px)")/*this is the class of the element*/        

          {
                            Tesla = link.FirstChild.InnerHtml;
                        }
                    }
                    label11.Text = Tesla;

это код, который я сделал до сих пор, кто-то может увидеть, почему не работает?

Спасибо.

1 Ответ

0 голосов
/ 12 ноября 2018

Это ноль, потому что он еще не загружался, когда вы пытаетесь получить к нему доступ. Вы должны обрабатывать это асинхронно.

Обработайте событие DocumentCompleted и получите доступ к Document в обработчике.

Замените код, который у вас есть:

WebBrowser JOJO = new WebBrowser();
JOJO.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler
                          (this.BrowserDocumentCompleted);
JOJO.Url = new Uri("https://finance.yahoo.com/quote/TSLA?p=TSLA");

А вот обработчик:

void BrowserDocumentCompleted(object sender,
    WebBrowserDocumentCompletedEventArgs e)
    {
        if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
            return;

        string Tesla = "";
        var sal = (sender as WebBrowser).Document.GetElementsByTagName("div");
        foreach (HtmlElement link in sal)
        {
            if (link.GetAttribute("className") == "D(ib) Mend(20px)")
            {
                Tesla = link.FirstChild.InnerHtml;
            }
        }
        label1.Text = Tesla;
    }

Теперь у вас могут возникнуть другие проблемы с перенаправлениями. Но это другое обсуждение:)

...