以下に示すようなスパイダーのスクレイピープロジェクトがあります。このスパイダーを次のコマンドで実行すると、スパイダーは機能します。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
mysql.db ではなく、scrapyd と mysql サーバー間の接続を確立するにはどうすればよいですか?