【问题标题】:Applying a Regex Filter to Crawler to crawl specific pages将正则表达式过滤器应用于爬虫以爬取特定页面
【发布时间】:2018-10-23 18:49:00
【问题描述】:

我正在使用 Storm crawler 1.10 和 Elastic Search 6.3.x。例如,我有一个主网站https://www.abce.org,它有像https://abce.org/defhttps://abce.org/ghi 这样的子页面。我想专门抓取https://www.abce.org/ghi下的页面。

我的种子网址是https://www.abce.org/ghi/

目前我每次都在不同的正则表达式过滤器下应用。

  1. +^https:\/\/www.abce.org\/ghi*
  2. +^(?:https?:\/\/)www.abce.org\/ghi(.+)*$
  3. +^(?:https?:\/\/)?(?:www\.)?abce\.[a-zA-Z0-9.\S]+$

我测试了我的正则表达式 regexr 它显示有效。但是当我检查 statusindex 时,它的显示只发现了种子 url,没有别的。

【问题讨论】:

    标签: regex web-crawler stormcrawler


    【解决方案1】:

    试试FastURLFilter,您可能会觉得使用起来更直观。在调试模式下运行拓扑以检查您是否已将 URL 提交到 URLFilters,并且它们的行为与您预期的一样。

    在你问之前,here's a tip on debugging Storm

    【讨论】:

    • 感谢您推荐 FastURLFilter。我添加了 fast.urlfiter.json 并更新了 urlfilters.json。不幸的是,当我在管理 UI 上的 Bolts 部分检查时,爬虫拓扑已提交,但在获取或解析方面没有任何进展。我正在分享我的配置文件。我的 urlfilters.json { "class": "com.digitalpebble.stormcrawler.filtering.regex.FastURLFilter", "name": "FastURLFilter", "params": { "file": "fast.urlfilter.json" } }fast.urlfilter.json [ { "scope": "domain:abce.org", "patterns": [ "AllowPath /ghi/", "DenyPath .+" ] } ].
    • 当我在本地模式下运行爬虫时,我进行了彻底检查,它正在爬到一定水平并给出 java.net.ConnectException: Connection refused 。当我在远程运行时甚至没有爬取单个 url。
    • 我发现了这个问题,因为我正在运行爬虫,我杀死了我的一个爬虫并重新运行了适合我的 FastURLFilter
    • @an__snatcher 很高兴听到你让它工作。随意将答案标记为有用和/或已接受。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2019-03-23
    相关资源
    最近更新 更多