Python: Obtenez le lien de téléchargement à partir du bouton javascript

J'essaie d'obtenir mon script pour télécharger des sous-titres de www.subscene.com. Le problème est que le bouton de téléchargement sur la page Web est créé dans java et, pour une raison quelconque, je ne peux pas télécharger de sous-titres, même si j'extraine l'URL.

Je pense que c'est le code du bouton de téléchargement:

<a id="s_lc_bcr_downloadLink" class="downloadLink rating0" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;s$lc$bcr$downloadLink&quot;, &quot;&quot;, true, &quot;&quot;, &quot;/english/How-I-Met-Your-Mother-Seventh-Season/subtitle-482407-dlpath-90698/zip.zipx&quot;, false, true))">Download English Subtitle</a><a id="s_lc_bcr_previewLink" href="javascript:togglePreview(482407, 'zip');">(See preview)</a> 

Alors j'extrais l'url et dis mon script pour le télécharger:

 urllib.urlretrieve('http://subscene.com/english/How-I-Met-Your-Mother-Seventh-Season/subtitle-482407-dlpath-90698/zip.zipx','c:\\sub.zip') 

(Ajouté 'http://subscene.com')

Mais pour une raison quelconque, il ne télécharge pas le bon fichier. Qu'est-ce que je suis supposé faire?

MODIFIER:

Merci beaucoup! Malheureusement, je ne peux pas le faire fonctionner 🙁 il dit ce qui suit

 from selenium import webdriver browser = webdriver.Firefox() browser.execute_script('WebForm_DoPostBackWithOptions(newWebForm_PostBackOptions("s$lc$bcr$downloadLink", "", true, "", "/english/How-I-Met-Your-Mother-Seventh-Season/subtitle-482407-dlpath-90698/zip.zipx", false, true))') Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> browser.execute_script('WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("s$lc$bcr$downloadLink", "", true, "", "/english/How-I-Met-Your-Mother-Seventh-Season/subtitle-482407-dlpath-90698/zip.zipx", false, true))') File "C:\Users\User\AppData\Roaming\Python\Python27\site-packages\selenium\webdriver\remote\webdriver.py", line 385, in execute_script{'script': script, 'args':converted_args})['value'] File "C:\Users\User\AppData\Roaming\Python\Python27\site-packages\selenium\webdriver\remote\webdriver.py", line 153, in execute self.error_handler.check_response(response) File "C:\Users\User\AppData\Roaming\Python\Python27\site-packages\selenium\webdriver\remote\errorhandler.py", line 126, in check_response raise exception_class(message, screen, stacktrace) WebDriverException: Message: '' 

Comme John l'a dit, ce n'est pas le fichier mais le code javascript. Donc, au lieu d'obtenir ce fichier en utilisant urllib.urlretrieve, vous pouvez exécuter le javascript qui télécharge les fichiers à leur tour. Cela peut être fait en utilisant un module de sélénium –

 from selenium import webdriver browser = webdriver.Firefox() browser.get('http://subscene.com/english/How-I-Met-Your-Mother-Seventh-Season/subtitle-482407.aspx') browser.execute_script('WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("s$lc$bcr$downloadLink", "", true, "", "/english/How-I-Met-Your-Mother-Seventh-Season/subtitle-482407-dlpath-90698/zip.zipx", false, true))') raw_input() 

J'ai eu cet extrait javascript utilisant Firebug.