我在python中实现了一个小爬虫,我想尝试在弹性搜索中导出结果,如tutorial中所述。
由于更新了scrapy插件的弹性搜索,因此我在评论中提出了修正建议(cf github link)。我已经用刮刀中的现有字段更改了ELASTICSEARCH_UNIQ_KEY。当然我已经安装了插件并检查了我的蜘蛛是否有效(我已经成功地在json中输出命令scrapy crawl brand -o output.json
,其中brand是我蜘蛛的名字)
我已经安装了elasticsearch并且它正在运行,我已经能够重现一些找到here的例子。但是当我使用以下命令时它不起作用:scrapy crawl brand
。
我在settings.py文件中的行ELASTICSEARCH_LOG_LEVEL= 'log.DEBUG'
中添加了引号,因为没有识别日志。但现在,我有以下错误:
Traceback (most recent call last):
File "C:\Users\stephanie\Downloads\WinPython-32bit-2.7.9.2\python-2.7.9\lib\site-packages\twisted\internet\defer.py", line 588, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "C:\Users\stephanie\Downloads\WinPython-32bit-2.7.9.2\python-2.7.9\lib\site-packages\scrapyelasticsearch\scrapyelasticsearch.py", line 70, in process_item
self.index_item(item)
File "C:\Users\stephanie\Downloads\WinPython-32bit-2.7.9.2\python-2.7.9\lib\site-packages\scrapyelasticsearch\scrapyelasticsearch.py", line 53, in index_item
log.msg("Generated unique key %s" % local_id, level=self.settings.get('ELASTICSEARCH_LOG_LEVEL'))
File "C:\Users\stephanie\Downloads\WinPython-32bit-2.7.9.2\python-2.7.9\lib\site-packages\scrapy\log.py", line 49, in msg
logger.log(level, message, *[kw] if kw else [])
File "C:\Users\stephanie\Downloads\WinPython-32bit-2.7.9.2\python-2.7.9\lib\logging\__init__.py", line 1220, in log
raise TypeError("level must be an integer")
TypeError: level must be an integer
2015-08-04 02:06:02 [scrapy] INFO: Crawled 1 pages (at 1 pages/min), scraped 0 items (at 0 items/min)
2015-08-04 02:06:02 [scrapy] INFO: Closing spider (finished)
2015-08-04 02:06:02 [selenium.webdriver.remote.remote_connection] DEBUG: DELETE
http://127.0.0.1:49654/hub/session/209677e4-1577-4f05-a418-8554159d8c74/window {
"sessionId": "209677e4-1577-4f05-a418-8554159d8c74"}
2015-08-04 02:06:03 [selenium.webdriver.remote.remote_connection] DEBUG: Finished Request
2015-08-04 02:06:03 [scrapy] INFO: Dumping Scrapy stats:
我正在使用python 2.7和elasticsearch 1.7.1 我是否必须使用弹性搜索进行一些配置或可能导致此错误的原因?谢谢你的帮助。
答案 0 :(得分:4)
我没有ElasticSearch设置来尝试此操作,但您可以尝试修改settings.py,将以下内容添加到settings.py的顶部
import logging
并改变
ELASTICSEARCH_LOG_LEVEL= 'log.DEBUG'
到
ELASTICSEARCH_LOG_LEVEL= logging.DEBUG
如果上述情况仍然不起作用,您可以尝试这样做:
ELASTICSEARCH_LOG_LEVEL= 10