2016-11-28 6 views
0

J'ai url https://cars.mail.ru/reviews/renault/?year=2010-2016 et je devrait ouvrir à partir de làPython: ouvrir une référence d'URL

https://cars.mail.ru/reviews/renault/sandero_stepway/2015/143355/ 
https://cars.mail.ru/reviews/renault/sandero/2015/147850/ 
https://cars.mail.ru/reviews/renault/sandero/2012/147529/ 
https://cars.mail.ru/reviews/renault/duster/2014/147433/ 
https://cars.mail.ru/reviews/renault/logan/2011/146991/ 
https://cars.mail.ru/reviews/renault/duster/2015/146645/ 

je dois ouvrir tous ces liens et à côté de la page suivante et ouverte il y a tous les liens. Comment puis-je le faire rapidement? Si je

models = ['11', '12', '14', '15', '16', '17', '18', '19', '20', '21', '25', '30', '4', '5', '6', '9', 
    'avantime', 'clio', 'clio_rs', 'duster', 'espace', 'estafette', 'express', 'fluence', 
    'fuego', 'grand_espace', 'grand_scenic', 'kangoo', 'kaptur', 'koleos', 'laguna', 'latitude', 
    'logan', 'mascott', 'master', 'megane', 'megane_rs', 'modus', 'safrane', 'sandero', 'sandero_stepway', 
    'scenic', 'symbol', 'trafic', 'twingo', 'vel_satis'] 
years = ['2010', '2011', '2012', '2013', '2014', '2015', '2016'] 
pattern = 'https://cars.mail.ru/reviews/renault/' 

for model in models: 
    for year in years: 
     for i in range(143350, 143360): 
      res = pattern + model + '/' + year + '/' + str(i) 
      try: 
       page = urllib2.urlopen(res).read() 
       print page 
       soup = BeautifulSoup(page, 'html.parser') 
      except: 
       continue 

Il prend tellement de temps

Répondre

0

Vous faites

len(models) * len(years) * (143360 - 143350) # 3220 

requêtes HTTP. Si chacun ne prend qu'une seconde, vous êtes occupé pendant près d'une heure.

Vous pouvez essayer multiprocessing.

+0

Cet exemple de test. J'ai 'pour i dans la gamme (0, 150000):' dans les données réelles –

+0

Encore pire. C'est 483 000 000 demandes. Ce n'est pas un problème que le code Python peut résoudre, vous devrez réduire le nombre de requêtes. –