找到包含特定参数的内部链接

时间:2014-10-24 03:07:53

标签: web-crawler

我正在尝试弄清楚如何抓取网站并找到包含特定跟踪参数的链接。原因:我们的一些内容作者在我们网站上的一些内部链接(包含数千页)附加了一个“campaign = test”。这些参数会污染分析结果,需要将其删除。但当然我首先必须找到它们......

我认为自定义抓取工具可以解决问题,但我不是程序员。大多数链接检查器仅报告损坏的链接而不是特定的链接参数。也许我只是错过了一些非常明显的东西?

2 个答案:

答案 0 :(得分:0)

我已经使用 Norconex HTTP收集器(免费/开源)测试了您的方案,它提供了您想要的内容,而无需编写代码。

首先,从此位置下载Norconex HTTP Collector:http://www.norconex.com/product/collector-http/。建议您下载一个" Committer"但在这种情况下你不需要。

其次,将下载的zip解压缩到您选择的目录中。

在该目录中,创建一个配置文件(让我们调用它" links-detector.xml")并复制以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<httpcollector id="Link Locator Collector">

  #set($workdir = "/path/of/your/choice")

  <!-- Decide where to store generated files. -->
  <progressDir>${workdir}/progress</progressDir>
  <logsDir>${workdir}/logs</logsDir>

  <crawlers>
    <crawler id="Link Locator Crawler">

      <startURLs>
        <!-- Replace with the start URL to your site -->
        <url>http://en.wikipedia.org/wiki/Main_Page</url>
      </startURLs>

      <workDir>${workdir}</workDir>

      <!-- Increase to match your site. -->
      <maxDepth>1</maxDepth>

      <!-- Hit interval, in milliseconds. -->
      <delay default="1000" />

      <numThreads>2</numThreads>

      <robotsTxt ignore="true" />

      <!-- At a minimum make sure you stay on your domain. -->
      <httpURLFilters>
        <filter class="com.norconex.collector.http.filter.impl.RegexURLFilter"
                onMatch="include" >
          http://en\.wikipedia\.org/wiki/.*
        </filter>
      </httpURLFilters>

      <!-- This filter will only accept URLs with ":" in them after 
           URLs were extracted for further crawling. 
           Change to match your pattern -->
      <httpDocumentFilters>
        <filter class="com.norconex.collector.http.filter.impl.RegexURLFilter"
                onMatch="include" >
          http://.*:.*
        </filter>
      </httpDocumentFilters>

      <!-- We do not want to store the data anywhere. -->
      <committer class="com.norconex.committer.impl.NilCommitter" />
    </crawler>
  </crawlers>

</httpcollector>

该配置用于测试检测到具有&#34;:&#34;的维基百科网址。他们的性格。修改指示的配置值以符合您自己的需要(即更改起始URL,更新正则表达式等)。

如果您不熟悉正则表达式,则应符合您的方案:.*\?campaign=test.*

您将在logs / latest目录下找到所有匹配的URL,它们也将打印到控制台。你会打印出太多的东西。要将输出仅限制为您所使用的匹配URL,请修改classes/log4j.properties个文件。将所有loglevels更改为除此之外的WARN(保持在INFO):log4j.logger.com.norconex.collector.http.crawler.CrawlStatus.OK=INFO

完成所有操作后,您可以尝试运行它(在Unix / Linux上用.sh替换.sh):

collector-http.bat -a start -c links-detector.xml

除非有错误,否则输出应该会为您提供与您网站上的模式匹配的所有链接。

答案 1 :(得分:0)

您也可以使用Site Visualizer Pro网站抓取工具执行此操作。

  1. 点击项目 - &gt;新&#39;,指定您网站的网址,然后点击确定开始按钮。
  2. 抓取完成后,转到Site Visualizer主窗口的数据库标签,然后执行以下SQL查询:(复制并粘贴文本,然后单击执行按钮)
  3. select * from links where to_url like '%campaign=test%'

    您将在窗口底部获得所需的所有链接(将&#39;%f = 3%&#39; 示例替换为您的 &#39;%=运动测试%&#39; ):

    enter image description here

    有很多列描述了每个链接(内容类型,响应,锚文本,源代码等),但我认为您只需要 from_url (以确切知道哪个页面)包含此类&#39; campaign = test&#39;链接)和 to_url (以了解链接引用的页面)列。

    Ctrl + A 快捷方式,然后右键点击结果表,然后选择复制带标题的行&#39;上下文菜单命令。之后,您就可以将数据粘贴到MS Excel工作表或类似的应用程序中。

    Site Visualizer Pro具有30天的全功能试用期,因此您可以免费执行任务。