Je commence à écrire des scrapers pour obtenir des données de différents sites Web. J'ai construit le premier scraper dans un fichier rake et je commence maintenant à écrire un deuxième fichier rake pour obtenir des données d'un second site. Pour l'instant, j'écris un grattoir spécifique à chaque site qui m'intéresse (sans essayer de construire un grattoir générique).Rake tâche pour racler avec des rails
J'ai 3 questions:
est d'écrire des tâches rake un bon choix pour moi? Existe-t-il des alternatives que je devrais envisager?
Comment puis-je ajouter des fonctions/méthodes à mes fichiers Rake? (désolé, des questions très stupides, mais je ne peux pas comprendre comment structurer mon code ... donc pour l'instant c'est juste 500 lignes de code ininterrompu dans une longue méthode) par exemple, je voudrais un "get_description (section) "méthode qui renvoie la description de la page. La méthode pourrait être différente selon le site que je gratte. Comment tester ma tâche avec RSpec? Je voudrais donner un lien et m'assurer que la sortie de mes tâches correspond à ce que je m'attends à obtenir
Merci pour votre aide!
Génial, cela aide beaucoup! Il semble que ce soit la voie que je devrais suivre ... Juste une question: je voudrais éviter d'avoir mes modèles spécifiques Scraper dans le dossier "models" de mon application Rails. Comment puis-je créer un dossier pour les modèles spécifiques de Scraper (scraper.rb pour les fonctions communes, site1.rb pour les fonctions spécifiques à site1, etc) et mes tâches rake "le voient"? – alex
Créez quelque chose comme 'app/scraper/site1.rb'. Si vous utilisez Rails 3, vous pouvez ajouter n'importe quel répertoire dans l'application qui sera automatiquement (paresseux) chargé.Chargez l'environnement pour vos tâches: 'task: site_1 =>: environnement do'. Si vous ne voulez pas charger les rails entiers, demandez les fichiers manuellement. – iain
Super! Je suis toujours sur 2.3.8 ... alors j'ai dû charger le dossier en ajoutant ** config.load_paths << "# {RAILS_ROOT}/app/scrapers" ** à mon fichier environment.rb. Merci pour l'aide! – alex