una script pasar parser llamar integrar funcion desde datos conectar con como python screen-scraping

script - Descargar archivo de imagen de la fuente de la página HTML con Python?



python y html5 (6)

Aquí hay un código para descargar todas las imágenes de la URL proporcionada y guardarlas en la carpeta de salida especificada. Puede modificarlo para sus propias necesidades.

""" dumpimages.py Downloads all the images on the supplied URL, and saves them to the specified output file ("/test/" by default) Usage: python dumpimages.py http://example.com/ [output] """ from bs4 import BeautifulSoup as bs from urllib.request import ( urlopen, urlparse, urlunparse, urlretrieve) import os import sys def main(url, out_folder="/test/"): """Downloads all the images at ''url'' to /test/""" soup = bs(urlopen(url)) parsed = list(urlparse(url)) for image in soup.findAll("img"): print("Image: %(src)s" % image) filename = image["src"].split("/")[-1] parsed[2] = image["src"] outpath = os.path.join(out_folder, filename) if image["src"].lower().startswith("http"): urlretrieve(image["src"], outpath) else: urlretrieve(urlunparse(parsed), outpath) def _usage(): print("usage: python dumpimages.py http://example.com [outpath]") if __name__ == "__main__": url = sys.argv[-1] out_folder = "/test/" if not url.lower().startswith("http"): out_folder = sys.argv[-1] url = sys.argv[-2] if not url.lower().startswith("http"): _usage() sys.exit(-1) main(url, out_folder)

Editar: puede especificar la carpeta de salida ahora.

Estoy escribiendo un raspador que descarga todos los archivos de imagen de una página HTML y los guarda en una carpeta específica. todas las imágenes son parte de la página HTML.


Debe descargar la página y analizar el documento html, buscar su imagen con expresiones regulares y descargarla .. Puede usar urllib2 para descargar y Beautiful Soup para analizar archivos html.


La solución de Ryan es buena, pero falla si las URL de fuente de la imagen son URL absolutas o cualquier cosa que no da un buen resultado cuando simplemente se concatena a la URL de la página principal. urljoin reconoce URL absolutas vs. relativas, así que reemplace el bucle en el medio con:

for image in soup.findAll("img"): print "Image: %(src)s" % image image_url = urlparse.urljoin(url, image[''src'']) filename = image["src"].split("/")[-1] outpath = os.path.join(out_folder, filename) urlretrieve(image_url, outpath)


Si la solicitud necesita una autorización, consulte este:

r_img = requests.get(img_url, auth=(username, password)) f = open(''000000.jpg'',''wb'') f.write(r_img.content) f.close()


Utilice htmllib para extraer todas las etiquetas img (invalidar do_img), luego use urllib2 para descargar todas las imágenes.


Y esta es la función para descargar una imagen:

def download_photo(self, img_url, filename): file_path = "%s%s" % (DOWNLOADED_IMAGE_PATH, filename) downloaded_image = file(file_path, "wb") image_on_web = urllib.urlopen(img_url) while True: buf = image_on_web.read(65536) if len(buf) == 0: break downloaded_image.write(buf) downloaded_image.close() image_on_web.close() return file_path