2013-04-26 42 views
1

我正在尝试开发一个桌面应用程序,以用作网站抓取工具。我的要求是用户应该能够在桌面应用程序中指定一个url。桌面应用程序应该能够调用asp.net脚本来从网站刮取数据并将记录返回到桌面应用程序。从C#桌面应用程序调用ASP.NET脚本

我应该使用Web服务还是ASP.NET运行时为此... ???

任何帮助表示赞赏:)

其他细节

刮擦活动已经done.I使用HTMLAgility PKG。这是我的刮码,从网页中提取公司名称列表。

public static String getPageHTML(String URL) 
     { 
      String totalCompanies = null; 
      HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL); 

      IWebProxy myProxy = httpWebRequest.Proxy; 

      if (myProxy != null) 
      { 
       myProxy.Credentials = CredentialCache.DefaultCredentials; 
      } 

      httpWebRequest.Method = "GET"; 

      HttpWebResponse res; 

      res = (HttpWebResponse)httpWebRequest.GetResponse(); 

      HtmlDocument doc1 = new HtmlDocument(); 

      doc1.Load(res.GetResponseStream()); 

      HtmlNode node = doc1.DocumentNode.SelectSingleNode("//td[@class='mainbody']/table/tr[last()]/td"); 

      try 
      { 
       totalCompanies = node.InnerText; 
       return totalCompanies; 
      } 
      catch (NullReferenceException e) 
      { 
        totalCompanies = "No records found"; 
        return totalCompanies; 

      } 




     } 
+0

我认为你需要web服务。 – Raika 2013-04-26 08:54:50

+1

为什么不能通过WebClient下载?并使用HtmlAgilityPack解析检索到的HTML?另外,请查看一些多线程基础知识并行执行操作。 – Yahya 2013-04-26 08:57:08

回答

1

您可以在桌面应用程序中使用HttpWebRequest,我之前完成此操作(winforms)。例如: -

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("url"); 
var response = new StreamReader(req.GetResponse().GetResponseStream()).ReadToEnd(); 

然后可以使用HtmlAgilityPack从响应分析数据:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(response); 

//Sample query 
var node = doc.DocumentNode.Descendants("div") 
      .Where(d => d.Attributes.Contains("id")).ToList(); 
+0

谢谢DGibbs.I'll试试这个,回来给你:) – SriniShine 2013-04-26 09:26:21

0

(这将是有益的,包括更多的细节/更具体)

如果你的ASP.NET页面已经完成了所有的抓取,而你所要做的就是访问那个ASP.NET页面,你可以简单地使用HttpWebRequest

http://msdn.microsoft.com/en-us/library/456dfw4f.aspx - 简短说明&教程

如果该URL是TO BE SCRAPED网站,并且您需要将该ASP.NET脚本包含在您的项目中,那么您需要将其添加为Web服务。

+0

的网址是网站被刮 – SriniShine 2013-04-26 09:04:05

+0

好的。你想使用的ASP.NET脚本在哪里?你必须在你的代码中引用它,或者(疯狂猜测)HTTP将它的url作为参数发送给你。 请提供有关脚本的更多详细信息 – 2013-04-26 09:07:33

+0

我用刮码编辑了我的帖子。 – SriniShine 2013-04-26 09:25:34

0

你可以同时做到这一点,但你也可以通过添加一个webbrowser到你的桌面应用程序。我不知道为什么,但结果要快得多。