调试Scrapy项目管道

时间:2016-11-06 23:16:35

标签: python mysql scrapy scrapy-pipeline

我正在尝试将已删除的项目保留到在localhost上运行的MySQL中。即使很难蜘蛛抓取网站并以预期方式抓取项目,我的持久化管道对象也不起作用 - 它不会将项目存储到数据库中。

pipelines.py文件中的PersistMySQL类:

class PersistMySQL(object):

    con = None
    cur = None
    query = "INSERT INTO table(title, description, price) VALUES(%s, %s, %s)"

    def __init__(self):
        self.setupDBCon()

    def __del__(self):
        self.con.close()

    def setupDBCon(self):
        self.con = MySQLdb.connect(host='localhost',
                                   user='root',
                                   passwd='mypass',
                                   db='mydb')
        self.cur = self.con.cursor()

    def process_items(self, item):
        try:
            self.cur.execute(self.query, (item['Title'], item['Desc'], item['Price']))
            self.con.commit()
        except Error as err:
            print err

它不会打印异常块,因此我的查询似乎有效。 以下代码位于settings.py(以及其他设置)中:

ITEM_PIPELINES = {
'myScraper.pipelines.CleanHTMLPipeline': 100,
'myScraper.pipelines.CleanStringPipeline': 200,
'myScraper.pipelines.PersistMySQL': 300
}

我使用scrapy shell并发现它非常有用但似乎没有办法从shell调试项目管道并使用打印MySQL错误的例外没有帮助。蜘蛛关闭时没有任何错误,并且抓取了合理数量的项目,应该保留在数据库中。

0 个答案:

没有答案