J'essaie d'utiliser un Spider Scrapy pour résoudre un problème (une question de programmation de HackThisSite) :
(1) Je dois me connecter à un site web, en donnant un nom d'utilisateur et un mot de passe (déjà fait).
(2) Ensuite, je dois accéder à une image avec une URL donnée (l'image n'est accessible qu'aux utilisateurs connectés).
(3) Ensuite, sans sauvegarder l'image sur le disque dur, je dois lire ses informations dans une sorte de tampon.
(4) Et le résultat de la fonction va remplir un formulaire et envoyer les données au serveur du site web (je sais déjà comment faire cette étape)
Donc, je peux résumer la question à : serait-il possible (en utilisant un spider) de lire une image accessible uniquement par les utilisateurs connectés et de la traiter dans le code du spider ?
J'ai essayé de rechercher différentes méthodes, l'utilisation des pipelines d'éléments n'est pas une bonne approche (je ne veux pas télécharger le fichier).
Le code que j'ai déjà est le suivant :
class ProgrammingQuestion2(Spider):
name = 'p2'
start_urls = ['https://www.hackthissite.org/']
def parse(self, response):
formdata_hts = {'username': <MY_USER_NAME>,
'password': <MY_PASSWORD>,
'btn_submit': 'Login'}
return FormRequest.from_response(response,
formdata=formdata_hts, callback=self.redirect_to_page)
def redirect_to_page(self, response):
yield Request(url='https://www.hackthissite.org/missions/prog/2/',
callback=self.solve_question_2)
def solve_question_2(self, response):
open_in_browser(response)
img_url = 'https://www.hackthissite.org/missions/prog/2/PNG'
# What can I do here?
Je pense pouvoir résoudre ce problème en utilisant les fonctions Scrapy, sinon il faudrait se reconnecter au site web (en envoyant les données du formulaire).