scrapyd连接到自己的数据库(mysql.db)而不是127.0.01:3306

时间:2012-10-14 19:48:19

标签: database-connection scrapy scrapyd

我有一个scrapy项目,其蜘蛛如下所示。当我用这个命令运行这个蜘蛛时蜘蛛工作:scrapy crawl myspider

class MySpider(BaseSpider):
    name = "myspider"

    def parse(self, response):
        links = SgmlLinkExtractor().extract_links(response)

        for link in links:
            item = QuestionItem()
            item['url'] = link
            yield item

    def __init__(self):
        start_urls = []

        conn = MySQLdb.connect(host='127.0.0.1',
                       user='root',
                       passwd='xxxx',
                       db='myspider',
                       port=3306)
        cur = conn.cursor()
        cur.execute("SELECT * FROM pages")
        rows = cur.fetchall()
        for row in rows:
            start_urls.append(row[0])

        self.start_urls = start_urls 

        conn. close()

在我使用“scrapy deploy -p mysqlproject”将此项目部署到scrapyd之后,然后使用"curl http://localhost:6800/schedule.json -d project=mysql -d spider=myspider"

计划蜘蛛

问题是没有从数据库中填充start_urls。相反,sql命令返回一个空数组。因为(我猜)它连接到自己的mysql.db,它由dbs_dir配置,如下所示:http://doc.scrapy.org/en/0.14/topics/scrapyd.html#dbs-dir

如何在scrapyd和mysql服务器之间建立连接而不是mysql.db?

1 个答案:

答案 0 :(得分:0)

我猜你的问题不是dbs_dir,它只指向内部的SQLite数据库。也许您正在连接到在scrapyd的部署服务器上运行的MySQL服务器,而不是包含start_urls的服务器。