4

我环顾四周寻找答案,但找不到答案。正如我昨天提到的,我是scrapy和python的新手,所以答案可能就在那里,但我没有赶上。

我写了我的蜘蛛,它工作得很好。这是我的管道....

import sys
import MySQLdb
import hashlib
from scrapy.exceptions import DropItem
from scrapy.http import Request

class somepipeline(object):
    def __init__(self):
        self.conn = MySQLdb.connect(user='user', 'passwd', 'dbname', 'host', charset="utf8", use_unicode=True)
        self.cursor = self.conn.cursor()

    def process_item(self, item, spider):    
        try:
            self.cursor.execute("""INSERT INTO sometable (title, link, desc)  
                            VALUES (%s, %s)""", 
                           (item['title'].encode('utf-8'), 
                            item['link'].encode('utf-8'),
                            item['desc'].encode('utf-8'))

            self.conn.commit()
        except MySQLdb.Error, e:
            print "Error %d: %s" % (e.args[0], e.args[1])
        return item

这是我的设置:

BOT_NAME = 'somebot'

SPIDER_MODULES = ['somespider.spiders']
NEWSPIDER_MODULE = 'somespider.spiders'
ITEM_PIPELINES = ['myproject.pipeline.somepipeline']

但是,当我运行它时,我得到一个:No module named pipeline 错误

找到了一个类似的答案,但它是针对图像类的,我只想要 HTML 数据。

我究竟做错了什么?我需要下载另一个模块吗?感谢帮助。如果我很近,请给我一个肘部。

4

3 回答 3

2

Scrapy 教程有一个错字:它必须是 'pipelineS'

ITEM_PIPELINES = ['myproject.pipelines.somepipeline']
于 2014-02-09T20:43:17.853 回答
1

没有“管道”文件。它应该是“管道”。所以你需要改变

ITEM_PIPELINES = ['myproject.pipeline.somepipeline']

ITEM_PIPELINES = ['myproject.pipelines.somepipeline']
于 2013-01-27T03:22:23.550 回答
0

正确的目录路径应该是这样的:

myproject/
     scrapy.cfg  
     myproject/
         __init__.py
         items.py
         pipeline.py
         settings.py
         spiders/
            spider.py

另一方面,你能确认你的蜘蛛工作正常吗?例如,如果您要注释掉 ITEM_PIPELINES 设置,您的蜘蛛程序是否工作并产生预期的输出?

于 2013-01-28T01:41:24.540 回答