我正在尝试开发一个桌面应用程序,用作网站抓取工具。我的要求是用户应该能够在桌面应用程序中指定一个URL。桌面应用程序应该能够调用asp.net脚本来从网站上抓取数据并将记录返回到桌面应用程序。
我应该使用Web服务还是ASP.NET运行时... ???
感谢任何帮助:)
其他详情
抓取活动已经完成。我使用了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 :(得分: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();
答案 1 :(得分:0)
(包含更多详细信息/更具体)会很有帮助
如果你的ASP.NET页面已经完成了所有的抓取工作,而你所需要做的就是访问那个ASP.NET页面,你可以简单地使用HttpWebRequest
http://msdn.microsoft.com/en-us/library/456dfw4f.aspx - 简短说明&教程
如果该URL是要被删除的网站,并且您需要在项目中包含该ASP.NET脚本,则需要将其添加为Web服务。
答案 2 :(得分:0)
您可以同时使用它们,但也可以通过向桌面应用程序添加webbrowser来实现。我不知道为什么,但结果要快得多。