使用DEiXTo网络数据提取进行多页搜索

时间:2015-06-11 20:18:59

标签: web-scraping web-crawler

我正在尝试使用DEiXTo工具从国际象棋网站中提取一系列动作。提取工具工作正常,从单个页面中提取出我需要的数据。但是,我无法使用多工具提取工具来提取一系列移动,这有两种方法可以提取要跟随的链接。

一种是输入包含要遵循的链接的节点的文本。如果我输入一个动作的文本,请说'1。 e4',然后DEiXTo将跟随链接。但是,当然,由于每个动作都有不同的文字,因此不能令人满意地遵循一系列动作。

第二种方法是将DEiXTo用语中的名称或“标题”赋予链接,我将其称为DOM树中的节点,并且将是页面HTML中的标记,并输入该标题在多页搜索框中。这是我无法工作的一点,因为提取过程没有超出第一页。

我一定错过了什么。部分问题可能是手册的英文版本,这是原始希腊文的翻译,偶尔会有点古怪。有人可以帮忙吗?

以下是DEiXTo GUI的屏幕截图,用于说明这种情况:

DEiXTo GUI

网页位于左上方窗格中,DOM树位于右上方 - 每个网页只显示一小部分:

构成提取模式的DOM页面部分位于右侧的小窗口中,左下方的窗格中显示了较大的部分。这显示了一些标题,特别是标签的“nextmove”标题。此标题包含在右下方窗格中选中的“多页抓取”框下方的关注字段链接中。

单击[Go!]或[!]按钮运行搜索会产生:

DEiXTo result

结果显示在右下方窗格中,该窗格正确列出了网页中的所有移动但不再进一步。可以看出,在链接字段中输入的标题“nextmove”提取了在提取过程的下一阶段应该遵循的链接。它们在这里只是部分可见,但我仔细看了看它们并且它们是正确的 - 但它们没有被遵循。但是,如果我插入文本'1。 e4'在链接字段中('moveText'字段中的第一项,由于跟随'nextmove'下的相应链接,我得到另外13条记录。

1 个答案:

答案 0 :(得分:1)

首先,UI文本“要遵循的HTML链接的文本或标题”不是指您在模式中为节点指定的名称。它引用了超链接中存在的内部文本,该内部文本指向下一页(在打开和关闭'a'html标记之间)。由于此文本不是固定的,而是取决于游戏,因此您无法使用此功能转到下一页。

然而,可以实现您想要的东西,但需要编程。

  1. 使模式中的A节点可选,因为下一页没有链接 - 因此下一页内容的模式将失败。

  2. 运行GUI deixto以使第一页移动到TXT文件中。

  3. 以programmaticaly方式打开文件并获取最后一行的网址(这是下一页的网址)。

  4. 打开wpf文件(它是一个XML文件),找到位于文件很早的以下XML元素: < TargetUrls>    < URL Address =“http://www.chessgames.com/perl/explorer”/> < / TargetUrls> 并使用在步骤#3中获得的URL替换Address属性的值。

  5. 保存新的wpf文件。

  6. 使用新的wpf文件运行deixto(您可以通过传递wpf文件作为参数来运行GUI deixto作为命令行应用程序。)

  7. 另一种更简单的方法是以下(我没试过)

    1. 如前所述
    2. 使用DEiXTo CLE执行wpf
    3. 如前所述
    4. 使用DEiXTo CLE执行wpf,将步骤#3的URL作为命令行参数传递(它将覆盖wpf文件的嵌入目标URL)。
    5. DEiXTo CLE是wpf文件的命令行执行程序。它支持许多命令行参数,并用于单个wpf无法完成工作的复杂情况。第3步是需要编程的。您必须打开结果文件并在最后一行的开头读取(如果存在)URL。如果不存在此类URL,则没有“下一页”。