使用C#控制台应用程序从网站抓取数据

时间:2017-04-06 10:37:43

标签: c# .net

我正在尝试学习西班牙语并制作一些闪存卡(供我个人使用)以帮助我学习动词。

以下是一个示例page example。所以在页面顶部附近你会看到过去的分词:bloqueado& gerund:bloqueando。我希望在我的代码中获得这两个值并用于我的闪存卡。

如果可以,我将使用C#控制台应用程序。我知道从网站上抓取数据并不理想,但这只是一次性的。

关于如何开始这样的事情和避免陷阱的任何指导都会非常有帮助!

2 个答案:

答案 0 :(得分:0)

我知道这不是一个确切的答案,但这是我建议的过程。

  1. https://www.gnu.org/software/wget/并将网站镜像到 夹。 Wget是一个网络蜘蛛,它将跟随网站上的链接,直到它下载了所有内容。您必须使用几个不同的参数运行它,直到找到所需的正确设置。
  2. 使用C#运行文件夹中的每个文件并解压缩 每个文件中<section class="verb-mood-section">的单词。您可以选择是将它们输出到控制台还是将它们存储在数据库或平面文件中。
  3. 理论上应该那么容易。

答案 1 :(得分:0)

使用SGMLReader。 SGMLReader是一个通用且强大的组件,它将HTML传输到XMLReader:

XmlDocument FromHtml(TextReader reader) {

    // setup SgmlReader
    Sgml.SgmlReader sgmlReader = new Sgml.SgmlReader();
    sgmlReader.DocType = "HTML";
    sgmlReader.WhitespaceHandling = WhitespaceHandling.All;
    sgmlReader.CaseFolding = Sgml.CaseFolding.ToLower;
    sgmlReader.InputStream = reader;

    // create document
    XmlDocument doc = new XmlDocument();
    doc.PreserveWhitespace = true;
    doc.XmlResolver = null;
    doc.Load(sgmlReader);
    return doc;
}

您会看到需要首先创建一个TextReader。由于TextReader是抽象类,因此实际上这将是StreamReader

然后在其上创建XMLDocument。一旦将其放入XMLDocument中,就可以使用XMLDocument支持的各种方法来隔离和提取所需的节点。我会让你去探索它的那个方面。

您可以尝试使用XDocument类,因为它比XMLDocument更容易处理,特别是如果您是新手。它还支持LINQ。