Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#实现表单登录和数据挖掘的自动化_C#_Web Crawler_Windows Console - Fatal编程技术网

C#实现表单登录和数据挖掘的自动化

C#实现表单登录和数据挖掘的自动化,c#,web-crawler,windows-console,C#,Web Crawler,Windows Console,我的数据库中有我的用户提供的用户名和密码列表,我希望使用这些记录自动登录到第三方网站,然后转到特定页面,并选择和数据挖掘该特定页面的HTML响应。简而言之,流程如下所示 进入登录页面->填写用户名和密码,选择下拉菜单 选项并提交->选择特定下拉菜单->提交选择 ->数据挖掘HTML响应->使用下一个用户名和密码重复该过程 [更新] 我已经学会了如何在.Net中进行网页抓取,它解决了数据挖掘部分 我仍然缺少的是自动登录(填写用户名、密码和提交)的功能。如果服务器将会话id保留为登录信息,则我需要能

我的数据库中有我的用户提供的用户名和密码列表,我希望使用这些记录自动登录到第三方网站,然后转到特定页面,并选择和数据挖掘该特定页面的HTML响应。简而言之,流程如下所示

进入登录页面->填写用户名和密码,选择下拉菜单 选项并提交->选择特定下拉菜单->提交选择 ->数据挖掘HTML响应->使用下一个用户名和密码重复该过程

[更新] 我已经学会了如何在.Net中进行网页抓取,它解决了数据挖掘部分


我仍然缺少的是自动登录(填写用户名、密码和提交)的功能。如果服务器将会话id保留为登录信息,则我需要能够使用相同的会话id登录并执行报废操作。

在用户\u 1登录成功后,您希望通过以下方式为用户\u 2回调界面登录: window.location=“输入Url您的页面html登录”; 例如菲律宾:
echo(“window.location=”;”

我编写了一个应用程序,如果网页某一小部分的值发生变化,它会向您发送电子邮件或文本消息。一个例子是,当您的竞争对手对给定产品的价格框发生变化时,某些情况会出现在登录页面后面

如下图所示,我在第一行输入了登录页面的URL,并单击了该行的“获取”按钮。它出去获取页面,然后用页面上的所有控件填充下面的“输入”网格

然后我必须输入将被发回的值。需要选择单选按钮,将哪个按钮标记为执行回发的按钮。因此,您的流程必须发回与页面相同的输入名称和正确的按钮名称

要使其工作,必须启用Cookie。登录步骤将返回添加了安全令牌的cookie,第二步必须返回具有相同令牌的cookie。这就是它知道您已登录的方式。代币上有过期时间

要想知道这是什么样子,可以在用Fiddler观察交通的同时做一次


这是我用C写的。当我在一个简单的站点上使用HttpWebRequest对象时。当涉及Ajax时,我使用了C#WebBrowser对象,因此我可以等待加载整个页面,这可能是您必须处理的复杂问题。

得到了解决方案,请参考下面的代码,这足以扩展为更复杂的代码

private void bttExecute_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate(URL);            
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            step++;

            switch (step)
            {
                case 1: //Login step                    

                    webBrowser1.Document.GetElementById("txtUsername").InnerText = "user123";

                    //This piece of code auto select the radio selection
                    HtmlElementCollection theElementCollection = webBrowser1.Document.GetElementsByTagName("input");
                    foreach (HtmlElement curElement in theElementCollection)
                    {
                        if (curElement.Id == "radio123")
                        {
                            curElement.InvokeMember("click");

                            break;
                        }
                    }

                    webBrowser1.Document.GetElementById("dropdown").SetAttribute("value", "2015"); 
                    webBrowser1.Document.GetElementById("button").InvokeMember("click");

                    break;

                case 2: 

                    //Grab the source code and process further
                    string sourceCode = webBrowser1.DocumentText;

                    break;

                case 3:



                    break;
            }

        }

在此之前,我需要解决如何填写用户名和密码并提交表单的问题。对不起,我不明白您想要什么?这些图像是自定义工具?@Kiquenet否,这些图像是我编写的并且仍然在使用的程序,但不幸的是,它是用Silverlight编写的……什么是webBrowser1?哪个名称空间引用其名称空间?