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
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")
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