2011-06-27 6 views
0

Je suis en train d'imprimer quelques informations à partir d'une URL, mais je veux sauter l'impression si un certain texte si trouvé, j'ai:python urllib2 question

import urllib2 

url_number = 1 
url_number_str = number 
a = 1 

while a != 10: 
    f = urllib2.urlopen('http://example.com/?=' + str(url_number_str) 
    f_contents = f.read() 
    if f_contents != '{"Response":"Parse Error"}': 
     print f_contents 
     a += 1 
     url_number_str += 1 

si { « réponse »: "Erreur d'analyse « } est le texte que je veux trouver pour éviter f.read d'impression() et chargement de l'URL NEXT (numéro 2)

Répondre

0

Bien que votre question est un peu floue, essayez ceci:

f = urllib2.urlopen('http://example.com/?id=1000') 
for line in f.readlines(): 
    if line != '{"Response":"Parse Error"}': 
     print line 

cette boucle sur chaque ligne de la page Web et s'arrête au '{"Response":"Parse Error"}'.

Edit: Nevermind c'est probablement ce que vous voulez:

f = urllib2.urlopen('http://example.com/?id=1000') 
data = f.read() 
if data != '{"Response":"Parse Error"}': 
    print data 

Cette imprimera la page Web entière, à moins qu'il est '{"Response":"Parse Error"}'.

+0

oui .readlines() est ce dont j'avais besoin, mais j'ai besoin de la boucle pour continuer à courir juste passer l'impression, je vais reformater ma question. – philberndt

0

read lit un bloc de données. La taille réelle de ce bloc est plus que probablement supérieure à la '{"Response":"Parse Error"}'.

Vous devriez donc rechercher la chaîne dans les données lues (voir la réponse @ harpyon), en utilisant RE ou strstr comme.

+0

non, c'est un json qui imprime juste '{"Réponse": "Erreur d'analyse"}' – philberndt

0

Je pense que c'est ce que vous voulez:

a = 1 

while a != 100: 
    f = urllib2.urlopen('http://example.com/?id=1000') 
    f_contents = f.read() 
    if f_contents != '{"Response":"Parse Error"}': 
     print f_contents 
    a += 1 

Bien que si vous n'êtes pas vouloir obtenir la même page 100 fois, vous pourriez avoir oublié d'ajouter a dans l'URL.