首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scrapyd连接到自己的数据库(mysql.db),而不是127.0.01:3306

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

Stack Overflow用户
提问于 2012-10-15 03:48:19
回答 1查看 880关注 0票数 0

我有一个抓取项目,其蜘蛛如下所示。当我使用以下命令运行此爬行器时,爬行器可以正常工作:scrapy crawl myspider

代码语言:javascript
复制
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命令返回一个空数组。因为(我猜)它连接到由dbs_dir配置的自己的mysql.db,如下所示:http://doc.scrapy.org/en/0.14/topics/scrapyd.html#dbs-dir

如何在scrapyd和mysql server之间建立连接,而不是mysql.db?

EN

回答 1

Stack Overflow用户

发布于 2013-01-08 20:24:38

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12885895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档