Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为几个不同的网站实现相同HTML解析器的最佳实践?_C#_Html_Parsing - Fatal编程技术网

C# 为几个不同的网站实现相同HTML解析器的最佳实践?

C# 为几个不同的网站实现相同HTML解析器的最佳实践?,c#,html,parsing,C#,Html,Parsing,我正在尝试用C编写一个HTML解析器。我需要从10个赌博网站获取数据。我在想什么是最好的方法。 起初,我想写一个大函数,用switch语句解析所有的网站,但我认为这是一个过分的做法。时间太长了。我使用HTML agility pack,因此每个实现都有相似但不同的结构 实现这种结构的最佳方法是什么?用公共部分创建一个基类,并为每个不同的解析器创建一个子类。从一个解析器到另一个解析器的函数可以声明为抽象的,因此必须在不同的子类中重写它们。有很多方法可以做到这一点。作为一个新手,我将实现一个网站/解

我正在尝试用C编写一个HTML解析器。我需要从10个赌博网站获取数据。我在想什么是最好的方法。 起初,我想写一个大函数,用switch语句解析所有的网站,但我认为这是一个过分的做法。时间太长了。我使用HTML agility pack,因此每个实现都有相似但不同的结构


实现这种结构的最佳方法是什么?

用公共部分创建一个基类,并为每个不同的解析器创建一个子类。从一个解析器到另一个解析器的函数可以声明为抽象的,因此必须在不同的子类中重写它们。

有很多方法可以做到这一点。作为一个新手,我将实现一个网站/解析器组合。 然后看看什么是常见的。 它们都有一个url。 他们都会有一些解析的东西 大概你想从每一条中提取相同种类的信息。 然后你想用这些信息做点什么

这意味着一个网站类 用于浏览网站并获取页面的类 解析类 解析信息类

您可以使用继承,尽管我的第一个想法是接口。 无论哪种方式,您都应该最终得到一个要解析的网站集合,每个网站都由自己的实例描述

从那里你可以简单地做一个foreach,你可以安排,你可以并行地做它们。更重要的是,你可以添加和删除目标,当其中一个目标在他们的网站上闲逛时,你可以继续攻击其他目标,或者当其他目标宕机时

用一个站点来证明你的想法,用两个站点来证明你的基础设施,然后用其他站点来证明你的想法,同时部署一些有效的东西,看看现实世界中是否发生了你没有想到的事情


大爆炸是用来制造宇宙的,而不是应用程序。

你可以实现一个模式,它可以是一个抽象类,可能带有一些共享方法,每个具体类实现并覆盖抽象方法。使用工厂方法,您可以选择适当的具体类来调用解析HTML,这可能取决于网站URL或某些配置。

如果网站的DOM结构不同,您希望如何使用相同的解析器实现这一点?您可以有一个基本的解析器类来检索远程标记,将其提供给HTML Agility Pack,然后有一些抽象方法来执行实际的选择器来查找所需的DOM元素。然后,对于每个站点,您都可以实现这个基类。谢谢。我不太明白你在最后一句话中的意思:你对每个网站都意味着什么?如果我有10个网站,那么我需要10个抽象类的派生类?是的,如果它们的DOM结构不同。请再问一个问题。我知道这是一个noob问题,但我必须问:在这里使用抽象类的目的是什么?毕竟,我有10种不同的方法,对吗?抽象类中的方法实际上什么都不做。为什么我不能为我的10个类中的每个类声明一个同名的方法呢?谢谢。我的想法完全正确我只是在想,将来如果我有更多的网站需要解析,我将不得不修改代码。你必须添加另一个类来解析新网站。