使用 Stormcrawler 爬取特定的子目录
Using Stormcrawler for crawling specific subdirectories
我希望能够抓取给定网站的非常具体的子目录。
例如:
在网站 www.world.com
上可能有多个子目录 /world
或 /bye
。这些依次可能包含多个页面 /world/new
等。让我们假设这些页面本身包含 link 到可能不在同一子目录中的其他页面。 (/world/new
有一个 link 到 /bye/new
)。
我想完成的是抓取 /world/
下每个页面的内容,并且只抓取这些页面。
忽略任何传出的 link 是个好主意,除非它也属于同一个子目录吗?我觉得很多页面都无法访问,因为它不会被直接 linked。例如 /world/new/
有一个 link /bye/new
,它又有一个 link 到 /world/next
。这会导致爬虫无法到达 /next
页面。 (如果我理解正确的话)。
另一种方法是抓取整个网站,然后根据 URL post 抓取过滤掉内容,这会使作业本身比需要的大得多。
Storm 爬虫有什么配置可以让这个更简单吗?或者也许有更好的方法来解决这个问题?
谢谢。
您已经在问题中描述了两种可能的方法。最简单的方法是使用 URL 过滤器并限制到您感兴趣的站点区域,但正如您所指出的,您可能会错过一些内容。替代方案确实更昂贵,因为您必须抓取整个站点,然后您可以将过滤作为索引步骤的一部分;为此,您可以添加一个简单的解析过滤器,以便在元数据中为 URL 创建一个键/值,其中 是 在感兴趣的部分中,并将其用作值indexer.md.filter.
当然,如果站点提供站点地图,您会提前知道它包含的所有 URL,在这种情况下,您可以依赖 URL 过滤器一个人。
我希望能够抓取给定网站的非常具体的子目录。
例如:
在网站 www.world.com
上可能有多个子目录 /world
或 /bye
。这些依次可能包含多个页面 /world/new
等。让我们假设这些页面本身包含 link 到可能不在同一子目录中的其他页面。 (/world/new
有一个 link 到 /bye/new
)。
我想完成的是抓取 /world/
下每个页面的内容,并且只抓取这些页面。
忽略任何传出的 link 是个好主意,除非它也属于同一个子目录吗?我觉得很多页面都无法访问,因为它不会被直接 linked。例如 /world/new/
有一个 link /bye/new
,它又有一个 link 到 /world/next
。这会导致爬虫无法到达 /next
页面。 (如果我理解正确的话)。
另一种方法是抓取整个网站,然后根据 URL post 抓取过滤掉内容,这会使作业本身比需要的大得多。
Storm 爬虫有什么配置可以让这个更简单吗?或者也许有更好的方法来解决这个问题?
谢谢。
您已经在问题中描述了两种可能的方法。最简单的方法是使用 URL 过滤器并限制到您感兴趣的站点区域,但正如您所指出的,您可能会错过一些内容。替代方案确实更昂贵,因为您必须抓取整个站点,然后您可以将过滤作为索引步骤的一部分;为此,您可以添加一个简单的解析过滤器,以便在元数据中为 URL 创建一个键/值,其中 是 在感兴趣的部分中,并将其用作值indexer.md.filter.
当然,如果站点提供站点地图,您会提前知道它包含的所有 URL,在这种情况下,您可以依赖 URL 过滤器一个人。