C#网络爬虫和NoSQL数据库

C#网络爬虫和NoSQL数据库,c#,database,nosql,C#,Database,Nosql,我是一名IT专业的学生,我们需要开发一个C#程序,从网站获取所有信息,然后使用NoSQL将信息添加到Oracle数据库中。我有几个问题,非常感谢您的帮助 我们决定使用Autotrader()网站和 NoSQL的MongoDB 到目前为止,我使用下面的代码将信息从网站写入文本文件,但问题是它只从当前页面获取信息,而不是整个网站 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse resp = (H

我是一名IT专业的学生,我们需要开发一个C#程序,从网站获取所有信息,然后使用NoSQL将信息添加到Oracle数据库中。我有几个问题,非常感谢您的帮助

我们决定使用Autotrader()网站和 NoSQL的MongoDB

到目前为止,我使用下面的代码将信息从网站写入文本文件,但问题是它只从当前页面获取信息,而不是整个网站

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(resp.GetResponseStream());
string sourceCode = sr.ReadToEnd();
sr.Close();
resp.Close();
return sourceCode;
我想知道我如何可以遵循所有的链接,并获得所有的信息从网站(不只是当前页面),而不去任何其他网站


其次,在我从网站获得所有信息后,我应该如何使用MongoDB等检索Oracle数据库的特定信息。

我可以帮助回答您问题的第一部分。您可以使用
HtmlAgilityPack
查找您刚刚抓取的网页中的所有链接。 您可以从这个问题中了解如何使用DoIt

基本上,您需要做的是从响应流初始化一个
HttpDocument
,然后执行

   var nodes =
            _htmlDocument.DocumentNode.SelectNodes("//a[@href]");
        if(nodes != null)
           var links = nodes.Select(a => a.Attributes["href"])
                         .Select(a => a.Value).Distinct(); 
一旦有了URL列表,就可以为每个URL递归调用scraper函数


下面是关于HtmlAgilityPack的更多信息

我会使用一个现有的Web自动化库,如Selenium WebDriver(这里是一个很好的示例)来驱动网页-这允许您像用户一样查询和驱动网页。

“C#Web爬虫和NoSQL数据库”不是问题。阅读此文章时,应在两个独立的问题中提出。您可能想看看我的实现。谢谢你的快速回复,Yohannes,我现在就开始工作。