在Nutch中抓取同一域的所有链接

时间:2014-07-29 05:13:08

标签: solr nutch

任何人都可以打电话给我如何抓取同一个域的所有其他页面。

例如,我在seed.txt。

中提供网站http://www.techcrunch.com/

在nutch-site.xml中添加了以下属性

<property>
<name>db.ignore.internal.links</name>
<value>false</value>
<description>If true, when adding new links to a page, links from
the same host are ignored.  This is an effective way to limit the
size of the link database, keeping only the highest quality
links.
</description>
</property> 

以下内容在regex-urlfilter.txt中添加

接受其他任何内容

+

注意:如果我在seed.txt中添加http://www.tutorialspoint.com/,我可以抓取所有其他网页,但不能抓取techcrunch.com的网页,尽管它还有很多其他网页。

请帮忙..?

2 个答案:

答案 0 :(得分:3)

nutch-default.xml中将db.ignore.external.links设置为true,将“db.ignore.external.links.mode”设置为byDomain。像这样:

<property>
 <name>db.ignore.external.links</name>
 <value>true</value>
</property>
<property>
 <name>db.ignore.external.links.mode</name>
 <value>byDomain</value>
</property>

默认情况下,db.ignore.external.links.mode设置为byHost。这意味着在抓取http://www.techcrunch.com/时,网址http://subdomain1.techcrunch.com将被视为EXTERNAL,因此将被忽略。但是您也希望抓取sudomain1个网页 - 因此db.ignore.external.links.mode保持byDomain

regex-urlfilter.txt无需解决问题。对于某些复杂情况,请使用regex-urlfilter.txt

答案 1 :(得分:1)

我认为你使用了错误的属性,首先在nutch-site.xml中使用db.ignore.external.links

<property>
 <name>db.ignore.external.links</name>
 <value>true</value>
 <description>If true, outlinks leading from a page to external hosts
 will be ignored. This will limit your crawl to the host on your seeds file.
 </description>
</property>

b)然后你也可以在regex-urlfilter.txt中使用正则表达式来限制抓取的域名只是techcrunch。

+^(http|https)://.*techcrunch.com/

然而我认为您的问题是Nutch服从robots.txt文件,在这种情况下,techcrunch的抓取延迟值为3600 !!见robots.txt。 fetcher.max.crawl.delay的默认值为30秒,使Nutch从techcrunch中删除所有页面。

来自nutch-default

中的fetcher.max.crawl.delay
"If the Crawl-Delay in robots.txt is set to greater than this value (in
seconds) then the fetcher will skip this page, generating an error report.
If set to -1 the fetcher will never skip such pages and will wait the
amount of time retrieved from robots.txt Crawl-Delay, however long that
might be."

您可能希望使用fetcher.threads.fetch和fetcher.threads.per.queue值来加速抓取。您还可以查看this并使用Nutch代码...或者您甚至可能希望使用其他方法来抓取长爬网延迟的网站。

希望这对你有用。

干杯!