Tengo que descargar una gran cantidad de documentos de una página web. Son archivos wmv, PDF, BMP, etc. Por supuesto, todos tienen enlaces a ellos. Así que cada vez que tengo un archivo RMC, seleccione 'Guardar enlace como' Luego guarde y escriba todos los archivos. ¿Es posible hacer esto en Python? Busco SO DB y la gente ha respondido la pregunta de cómo obtener los enlaces de la página web. Quiero descargar los archivos reales. Gracias por adelantado. (Esta no es una pregunta HW :)).Descargar todos los enlaces (documentos relacionados) en una página web usando Python
12
A
Respuesta
20
Aquí es un ejemplo de cómo se puede descargar algunos archivos escogidos de http://pypi.python.org/pypi/xlwt
tendrá que instalar mecanizar la primera: http://wwwsearch.sourceforge.net/mechanize/download.html
import mechanize
from time import sleep
#Make a Browser (think of this as chrome or firefox etc)
br = mechanize.Browser()
#visit http://stockrt.github.com/p/emulating-a-browser-in-python-with-mechanize/
#for more ways to set up your br browser object e.g. so it look like mozilla
#and if you need to fill out forms with passwords.
# Open your site
br.open('http://pypi.python.org/pypi/xlwt')
f=open("source.html","w")
f.write(br.response().read()) #can be helpful for debugging maybe
filetypes=[".zip",".exe",".tar.gz"] #you will need to do some kind of pattern matching on your files
myfiles=[]
for l in br.links(): #you can also iterate through br.forms() to print forms on the page!
for t in filetypes:
if t in str(l): #check if this link has the file extension we want (you may choose to use reg expressions or something)
myfiles.append(l)
def downloadlink(l):
f=open(l.text,"w") #perhaps you should open in a better way & ensure that file doesn't already exist.
br.click_link(l)
f.write(br.response().read())
print l.text," has been downloaded"
#br.back()
for l in myfiles:
sleep(1) #throttle so you dont hammer the site
downloadlink(l)
Nota: En algunos casos es posible que desee reemplazar br.click_link(l)
con br.follow_link(l)
. La diferencia es que click_link devuelve un objeto Request mientras que follow_link abrirá directamente el enlace. Ver Mechanize difference between br.click_link() and br.follow_link()
5
- seguir los códigos de Python en este enlace: wget-vs-urlretrieve-of-python.
- También puede hacerlo fácilmente con Wget. Pruebe
--limit
,--recursive
y--accept
líneas de comando enWget
. Por ejemplo:wget --accept wmv,doc --limit 2 --recursive http://www.example.com/files/
Cuestiones relacionadas
- 1. recuperar enlaces de la página web usando Python y BeautifulSoup
- 2. Cómo descargar una página web en php
- 3. Extraiga enlaces de una página web usando Go lang
- 4. ¿Cómo extraer enlaces de una página web usando lxml, XPath y Python?
- 5. ¿Cómo se analiza una página web y se extraen todos los enlaces href?
- 6. Obtenga todos los enlaces en la página html?
- 7. Obtener todos los enlaces href en DOM
- 8. Descargando una página web y todos sus archivos de recursos en Python
- 9. Deshabilitar todos los controles de formulario en una página web
- 10. descargar una copia local de trabajo de una página web
- 11. Fugas de memoria Javascript después de descargar una página web
- 12. Generar hipermedia enlaces en una API web
- 13. Python, XPath: Buscar todos los enlaces a las imágenes
- 14. Descargar CSS de la página web
- 15. Jquery: Anexar querystring a todos los enlaces
- 16. Descargar html en python?
- 17. Deshabilitar todos los enlaces dentro de IFRAME usando jQuery
- 18. Python, varios hilos, buscar páginas web, descargar páginas web
- 19. Scraping para una "vista previa" de una página web - Python
- 20. Usando jQuery para abrir todos los enlaces externos en una nueva ventana
- 21. Código C más rápido para descargar una página web
- 22. ¿Cómo descargar todos los archivos (pero no HTML) de un sitio web usando wget?
- 23. Recorrer todos los controles en la página web asp.net
- 24. descargar un sitio web completo en C#
- 25. ¿Cómo crear un enlace para descargar documentos generados en symfony2?
- 26. Encontrar todos los documentos en una colección con Mongoid
- 27. MongoMapper: encontrar todos los documentos creados en una fecha específica
- 28. BeautifulSoup - ¿modificando todos los enlaces en una pieza de HTML?
- 29. Bibtex en una página web?
- 30. llame a un número usando Skype en una página web
+1 para mecanizar! – jathanism
+1 para un código completamente funcional! –
robert kink, ejecuto su código solo para descargar archivos zip: el código se ejecuta sin errores, pero en la carpeta de descarga de cromos no veo los archivos – newGIS