Sto tentando di popolare start_url con un SELECT da una tabella MYSQL utilizzando spider.py. Quando eseguo "scrapy runpider spider.py" non ottengo output, solo che è finito senza errori.Python Scrapy: popola start_urls da mysql
Ho testato la query SELECT in uno script python e start_url viene popolato con gli accessi dalla tabella MYSQL.
spider.py
from scrapy.spider import BaseSpider
from scrapy.selector import Selector
import MySQLdb
class ProductsSpider(BaseSpider):
name = "Products"
allowed_domains = ["test.com"]
start_urls = []
def parse(self, response):
print self.start_urls
def populate_start_urls(self, url):
conn = MySQLdb.connect(
user='user',
passwd='password',
db='scrapy',
host='localhost',
charset="utf8",
use_unicode=True
)
cursor = conn.cursor()
cursor.execute(
'SELECT url FROM links;'
)
rows = cursor.fetchall()
for row in rows:
start_urls.append(row[0])
conn.close()
grazie per la risposta. ha funzionato, ho solo dovuto cambiare 'def populate_start_urls (self, url):' a 'def start_requests (self):'. l'ho contrassegnato come accettato poiché è il più vicino al codice che ho pubblicato. – maryo
Come si può fare se si dispone di siti Web di 22 milioni per eseguire la scansione generica? Suppongo che devi farlo iterationg 1000 alla volta. Puoi mostrare come iterarlo usando start_requests? –