我遇到了一个开源爬虫Bixo.有人试过吗?你能分享一下学习吗?我们能否轻松构建定向爬虫(与Nutch/Heritrix相比)?谢谢Nayn
我正在尝试开发一个应用程序,在其中我将为Nutch中的urls文件提供一组受限制的URL.我能够抓取这些网址,并通过从细分中读取数据来获取它们的内容.
我已经通过给出深度1来抓取,因为我不关心网页中的外链或链接.我只需要url文件中该网页的内容.
但执行此爬网需要时间.所以,建议我一种减少爬行时间和提高爬行速度的方法.我也不需要索引,因为我不关心搜索部分.
有没有人有关于如何加快爬行的建议?
我使用60000的db.fetch.interval.default设置Nutch,这样我每天都可以爬行.如果我不这样做,那么当我第二天爬行时,它甚至都不会看我的网站.但是当我第二天抓取时,昨天获取的每个页面都会获得一个200响应代码,表明它没有在"If-Modified-Since"中使用前一天的日期.它不应该跳过提取未更改的页面吗?有没有办法让它做到这一点?我注意到Fetcher.java中有一个ProtocolStatus.NOT_MODIFIED,所以我认为它应该可以做到这一点,不应该吗?
顺便说一句,这是从当前主干的conf/nutch-default.xml剪切和粘贴的:
<!-- web db properties -->
<property>
<name>db.default.fetch.interval</name>
<value>30</value>
<description>(DEPRECATED) The default number of days between re-fetches of a page.
</description>
</property>
<property>
<name>db.fetch.interval.default</name>
<value>2592000</value>
<description>The default number of seconds between re-fetches of a page (30 days).
</description>
</property>
Run Code Online (Sandbox Code Playgroud) 我的问题是从某个种子列表开始抓取每个页面和每个文档.
我已经安装了nutch并使用以下命令运行它:
bin/nutch crawl urls -solr http://localhost:8983/solr/ -depth 3 -topN 5
Run Code Online (Sandbox Code Playgroud)
我希望nutch进程能够抓取类似于100 url的内容,但它说它只找到了11个文档.所以我试着用这个命令运行nutch:
bin/nutch crawl urls -solr http://localhost:8983/solr/ -depth 3 -topN 4
Run Code Online (Sandbox Code Playgroud)
它找到了23个文件.
我正在从测试种子http://nutch.apache.org开始运行该过程
为什么nutch有这种行为?如何设置nutch从我的种子开始在一定深度抓取每个URL?
我无法找到,如何抓取网站和索引数据到elasticsearch.我设法在组合nutch + solr中做到这一点,因为nutch应该能够从版本1.8导出数据直接到elasticsearch (源),我试图再次使用nutch.然而,我没有成功.试图调用之后
$ bin/nutch elasticindex
Run Code Online (Sandbox Code Playgroud)
我明白了:
Error: Could not find or load main class elasticindex
Run Code Online (Sandbox Code Playgroud)
我不坚持使用nutch.我只需要最简单的方法来抓取网站并将它们编入索引到elasticsearch.问题是,我无法找到任何分步教程,我对这些技术还很陌生.
所以问题是 - 将爬虫与弹性搜索集成的最简单的解决方案是什么,如果可能的话,我将不胜感激任何一步一步的解决方案.
我正在使用Nutch1.9并尝试使用单个命令进行爬网.当进入第二级生成器返回0记录时可以看出输出.任何人都遇到过这个问题?我被困在这里过去2天.搜索了所有可能的选项.任何线索/帮助将非常感激.
<br>####### INJECT ######<br>
Injector: starting at 2015-04-08 17:36:20 <br>
Injector: crawlDb: crawl/crawldb<br>
Injector: urlDir: urls<br>
Injector: Converting injected urls to crawl db entries.<br>
Injector: overwrite: false<br>
Injector: update: false<br>
Injector: Total number of urls rejected by filters: 0<br>
Injector: Total number of urls after normalization: 1<br>
Injector: Total new urls injected: 1<br>
Injector: finished at 2015-04-08 17:36:21, elapsed: 00:00:01<br>
#### GENERATE ###<br>
Generator: starting at 2015-04-08 17:36:22<br>
Generator: Selecting best-scoring urls due for fetch.<br>
Generator: filtering: true<br>
Generator: normalizing: …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Apache Nutch 2.3 进行爬行。开始时种子中有大约 200 个 url。现在,随着时间的推移,文档爬虫的数量将会减少或最多与开始时相同。
如何配置 Nutch 以便增加我抓取的文档?有没有什么参数可以控制文档数量?其次,如何统计每天抓取的文档数量?
我正在使用Nutch 2.0来抓取一些网站,但我没有看到HTML元标记,如标题,描述被提取并存储在MySQL数据库中.任何想法我怎么能让它工作?
谢谢Arash
我的问题是:我想从某个域中提取所有有价值的文本,例如www.example.com。因此,我转到该网站并访问深度最大为2的所有链接,并将其写入csv文件。
我用scrapy编写了模块,使用1个进程解决了这个问题,并产生了多个爬虫,但是效率很低-我能够抓取〜1k域/〜5k网站/ h,据我所知,瓶颈是CPU(因为GIL?)。离开PC一段时间后,我发现网络连接断开。
当我想使用多个进程时,我只是从扭曲中得到了错误:并行进程中Scrapy Spiders的多处理因此,这意味着我必须学习扭曲,与asyncio相比,我会说我已弃用,但这只是我的见解。
所以我有几个想法怎么办
您推荐什么解决方案?
Edit1:共享代码
class ESIndexingPipeline(object):
def __init__(self):
# self.text = set()
self.extracted_type = []
self.text = OrderedSet()
import html2text
self.h = html2text.HTML2Text()
self.h.ignore_links = True
self.h.images_to_alt = True
def process_item(self, item, spider):
body = item['body']
body = self.h.handle(str(body, 'utf8')).split('\n')
first_line = True
for piece in body:
piece = piece.strip(' \n\t\r')
if len(piece) == 0:
first_line = True
else:
e = ''
if not self.text.empty() and not first_line and not …
Run Code Online (Sandbox Code Playgroud)