je ne sers Mechanize pour un jour, donc agréable: PComment télécharger un fichier, en utilisant Python Mechanize, avec une touche :) Ok
Je voudrais remplir un formulaire dont un (ou deux si possible) les champs de style de téléchargement de fichier. Ceux sur lesquels vous cliquez et qui vous permettent de rechercher un fichier.
(je veux automatiser le téléchargement d'un .torrent à un tracker/site privé)
Maintenant, les deux questions que j'ai eu est sur le site aucune des formes ont des noms, donc j'utilise la index du formulaire pour les choisir.
br.select_form(nr=4)
Maintenant, le problème est que je veux également télécharger un fichier lorsque je soumets le formulaire. Il y a deux champs de fichier et je ne pense pas que je spécifie correctement chacun d'eux. Voici une « impression » du formulaire fait en utilisant « print br.form »
<POST http://www.###.##.##/takeupload.php multipart/form-data
<HiddenControl(MAX_FILE_SIZE=1000000) (readonly)>
<TextControl(<None>=http://www.###.##.##:81/announce.php?passkey=###) (readonly)>
<FileControl(file=<No files added>)>
<TextControl(name=)>
<SelectControl(type=[*0, 23, 22, 1, 10, 7, 12, 4, 21, 17, 18, 13, 58, 16, 15, 56, 20, 60, 5, 19, 6, 55, 57, 63, 9])>
<CheckboxControl(strip=[strip])>
<FileControl(nfo=<No files added>)>
<TextareaControl(descr=)>
<SubmitControl(<None>=Do it!) (readonly)>>
J'ai essayé ce code en espérant qu'il serait juste par défaut à la première:
br.form.add_file(open(filename), 'text/plain', filename)
Mais, il donne à cette erreur
Traceback (most recent call last):
File "script.py", line 53, in <module>
br.form.add_file(open(filename), 'text/plain', filename)
File "/usr/local/lib/python2.6/dist-packages/mechanize-0.2.4-py2.6.egg/mechanize/_form.py", line 2968, in add_file
self.find_control(name, "file", id=id, label=label, nr=nr).add_file(
File "/usr/local/lib/python2.6/dist-packages/mechanize-0.2.4-py2.6.egg/mechanize/_form.py", line 3101, in find_control
return self._find_control(name, type, kind, id, label, predicate, nr)
File "/usr/local/lib/python2.6/dist-packages/mechanize-0.2.4-py2.6.egg/mechanize/_form.py", line 3183, in _find_control
raise AmbiguityError("more than one control matching "+description)
mechanize._form.AmbiguityError: more than one control matching type 'file'
Alors, comment dois-je:
- tell ce qui champ fichier que je voulais dire
- ou télécharger le fichier d'une autre façon
Merci beaucoup :)