9
votes

Téléchargements concurrents - Python

Le plan est ceci:

Je télécharge une page Web, collectez une liste d'images analysées dans le DOM, puis téléchargez-les. Après cela, je voudrais parcourir les images afin d'évaluer quelle image est la mieux adaptée pour représenter la page Web.

problème est que les images sont téléchargées 1 par 1 et cela peut prendre assez de temps.


Ce serait génial si quelqu'un pourrait me diriger dans une certaine direction concernant le sujet.

L'aide serait très appréciée.


0 commentaires

4 Réponses :


4
votes

ici est un article sur le threading qui utilise la récupération de l'URL comme exemple.


0 commentaires

6
votes

tandis que le filetage est certainement une possibilité, je suggérerais plutôt ASYNCORE - Il y a un excellent exemple Ici qui montre exactement la récupération simultanée de deux URL (facile à généraliser à n'importe quelle liste d'URL!).


0 commentaires

13
votes

Effacement de l'accélération de Crawling est fondamentalement cas d'utilisation principale d'événement . C'est profondément rapide - nous avons une application qui doit frapper 2 000 000 URL dans quelques minutes. Il utilise l'interface d'événement la plus rapide sur votre système (Epoll, généralement) et utilise GreeHreads (qui sont construites sur les corouts et sont très peu coûteux) pour faciliter l'écriture.

Voici Un exemple de Docs : P>

urls = ["http://www.google.com/intl/en_ALL/images/logo.gif",
     "https://wiki.secondlife.com/w/images/secondlife.jpg",
     "http://us.i1.yimg.com/us.yimg.com/i/ww/beta/y3.gif"]

import eventlet
from eventlet.green import urllib2  

def fetch(url):
  body = urllib2.urlopen(url).read()
  return url, body

pool = eventlet.GreenPool()
for url, body in pool.imap(fetch, urls):
  print "got body from", url, "of length", len(body)


0 commentaires

0
votes

De nos jours, il existe d'excellentes libs Python que vous voudrez peut-être utiliser - urllib3 et demande


0 commentaires