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

问题描述 投票:1回答:2

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

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

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

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

c# .net
2个回答
0
投票

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

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

理论上应该这么简单。


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。实际上这是一个StreamReader,因为TextReader是一个抽象类。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.