c浏览器bot问题

本文关键字:问题 bot 浏览器 | 更新日期: 2023-09-27 17:57:30

我正在尝试制作一个机器人,它可以进入流媒体网站,并从那里为我下载东西。问题是它的行为很奇怪,我正在使用foreach循环搜索元素,因为元素只有类而没有id。奇怪的是,我需要放置MessageBox。在foreach循环之前显示(),否则它将不会执行任何操作。

代码(C#):

private void startDownload()
{
            infoLabel5.Text = "Download started on series: " + series;
            infoLabel5.ForeColor = Color.Black;
            browser.ScriptErrorsSuppressed = true;
            browser.Navigate("http://www.anilinkz.tv");
            browserProgress.Increment(10);
            var elements = browser.Document.GetElementsByTagName("input");
            MessageBox.Show("set value");
            foreach (HtmlElement element in elements)
            {
                if (element.GetAttribute("classname") == "query")
                {
                    element.SetAttribute("value", series);
                    downloadStep2();
                }
            }
}
private void downloadStep2()
{
            infoLabel5.Text = "Download started on series: " + series;
            infoLabel5.ForeColor = Color.Black;
            browserProgress.Increment(5);
            var elements = browser.Document.GetElementsByTagName("input");
            MessageBox.Show("Click");
            foreach (HtmlElement element in elements)
            {
                if (element.GetAttribute("classname") == "searchbtn")
                {
                    element.InvokeMember("click");
                }
            }
}

有时它会突然告诉我var元素有一个null引用异常。

c浏览器bot问题

我最终解决了这个问题:

private void startDownload()
{
            action = "step1";
            infoLabel5.Text = "Download started on series: " + series;
            infoLabel5.ForeColor = Color.Black;
            browser.ScriptErrorsSuppressed = true;
            browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browserCompleted);
            browser.Navigate("http://www.anilinkz.tv");
            browserProgress.Increment(10);
}
private void browserCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
            if (action == "step1")
            {
                downloadStep1();
            }
}
private void downloadStep1()
{
            action = null;
            infoLabel5.Text = "Download started on series: " + series;
            infoLabel5.ForeColor = Color.Black;
            browserProgress.Increment(5);
            var elements = browser.Document.GetElementsByTagName("input");
            foreach (HtmlElement element in elements)
            {
                if (element.GetAttribute("classname") == "query")
                {
                    element.SetAttribute("value", series);
                    downloadStep2();
                }
            }
}
private void downloadStep2()
{
            infoLabel5.Text = "Download started on series: " + series;
            infoLabel5.ForeColor = Color.Black;
            browserProgress.Increment(5);
            var elements = browser.Document.GetElementsByTagName("input");
            foreach (HtmlElement element in elements)
            {
                if (element.GetAttribute("classname") == "searchbtn")
                {
                    element.InvokeMember("click");
                }
            }
}

感谢詹姆斯·索普指出了这个问题。