我正在尝试弄清楚如何抓取网站并找到包含特定跟踪参数的链接。原因:我们的一些内容作者在我们网站上的一些内部链接(包含数千页)附加了一个“campaign = test”。这些参数会污染分析结果,需要将其删除。但当然我首先必须找到它们......
我认为自定义抓取工具可以解决问题,但我不是程序员。大多数链接检查器仅报告损坏的链接而不是特定的链接参数。也许我只是错过了一些非常明显的东西?
答案 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网站抓取工具执行此操作。
select * from links where to_url like '%campaign=test%'
您将在窗口底部获得所需的所有链接(将
有很多列描述了每个链接(内容类型,响应,锚文本,源代码等),但我认为您只需要 from_url (以确切知道哪个页面)包含此类&#39; campaign = test&#39;链接)和 to_url (以了解链接引用的页面)列。
按 Ctrl + A 快捷方式,然后右键点击结果表,然后选择复制带标题的行&#39;上下文菜单命令。之后,您就可以将数据粘贴到MS Excel工作表或类似的应用程序中。
Site Visualizer Pro具有30天的全功能试用期,因此您可以免费执行任务。