我有一个抓取项目,其蜘蛛如下所示。当我使用以下命令运行此爬行器时,爬行器可以正常工作: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命令返回一个空数组。因为(我猜)它连接到由dbs_dir配置的自己的mysql.db,如下所示:http://doc.scrapy.org/en/0.14/topics/scrapyd.html#dbs-dir
如何在scrapyd和mysql server之间建立连接,而不是mysql.db?
发布于 2013-01-08 20:24:38
我猜你的问题不是只指向内部SQLite数据库的dbs_dir。也许你正在连接的是在scrapyd的部署服务器上运行的MySQL服务器,而不是包含start_urls的服务器。
https://stackoverflow.com/questions/12885895
复制相似问题