web-dev-qa-db-fra.com

Téléchargement du contenu de la page Web

Je souhaite écrire un programme python pour télécharger le contenu d'une page Web, puis télécharger le contenu des pages Web auxquelles la première page renvoie.

Par exemple, il s’agit de la page Web principale http://www.Adobe.com/support/security/ , et des pages que je souhaite télécharger: http: //www.Adobe. fr/support/security/bulletins/apsb13-23.html et http://www.Adobe.com/support/security/bulletins/apsb13-22.html

Il y a une certaine condition que je souhaite remplir: il ne doit télécharger que les pages Web sous les bulletins et non sous les avertissements ( http://www.Adobe.com/support/security/advisories/apsa13-02.html )

 #!/usr/bin/env python
 import urllib
 import re
 import sys
 page = urllib.urlopen("http://www.Adobe.com/support/security/")
 page = page.read()
 fileHandle = open('content', 'w')
 links = re.findall(r"<a.*?\s*href=\"(.*?)\".*?>(.*?)</a>", page)
 for link in links:
 sys.stdout = fileHandle
 print ('%s' % (link[0]))
 sys.stdout = sys.__stdout__
 fileHandle.close() 
 os.system("grep -i '\/support\/security\/bulletins\/' content >> content1") 

J'ai déjà extrait le lien de bulletins dans un contenu1, mais je ne sais pas comment télécharger le contenu de ces pages Web, en fournissant du contenu1 en entrée.

Le fichier content1 se présente comme suit: - /support/security/bulletins/apsb13-23.html /support/security/bulletins/apsb13-23.html /support/security/bulletins/apsb13-22.html/support/security/bulletins/apsb13-22.html /support/security/bulletins/apsb13-21.html /support/security/bulletins/apsb13-21.html /support/security/bulletins/apsb13-22.html/support/security/bulletins/apsb13-22.html /support/security/bulletins/apsb13-15.html /support/security/bulletins/apsb13-15.html /support/security/bulletins/apsb13-07.html

2
Naive

Si j'ai bien compris votre question, le script suivant devrait être ce que vous voulez:

#!/usr/bin/env python

import urllib
import re
import sys
import os
page = urllib.urlopen("http://www.Adobe.com/support/security/")
page = page.read()
fileHandle = open('content', 'w')
links = re.findall(r"<a.*?\s*href=\"(.*?)\".*?>(.*?)</a>", page)
for link in links:
    sys.stdout = fileHandle
    print ('%s' % (link[0]))
sys.stdout = sys.__stdout__
fileHandle.close() 
os.system("grep -i '\/support\/security\/bulletins\/' content 2>/dev/null | head -n 3 | uniq | sed -e 's/^/http:\/\/www.Adobe.com/g' > content1")
os.system("wget -i content1")
2
Radu Rădeanu

Probablement cette question est pour stackoverflow!

Mais de toute façon, vous pouvez regarder dans HTTrack pour cela, il effectue le même type d'opération et, de plus, son source ouverte

0
bikram990