2011-06-27 144 views
0

我試圖打印從URL的一些信息,但我想跳過打印,如果一旦發現一定的文字,我有:蟒蛇urllib2的問題

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 

所以{「響應」:「分析錯誤「}是,我想找到避免打印f.read()和裝載下一URL文本(2號)

回答

0

雖然你的問題是有點不清楚,試試這個:

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

這遍歷網頁中的每一行,並在處停止。

編輯:沒關係,這可能是你想要的東西:

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

這將打印整個網頁,除非它是'{"Response":"Parse Error"}'

+0

是的.readlines()是我需要的,但我需要循環繼續運行只是跳過打印,我會重新格式化我的問題。 – philberndt

0

read讀取數據塊。該塊的實際尺寸大於可能大於'{"Response":"Parse Error"}'

所以你應該在讀取數據中查找字符串(參見@ harpyon的答案),使用RE或者strstr就好。

+0

nope,它是一個json,只是打印'{「Response」:「解析錯誤」}' – philberndt

0

我想這是你想要什麼:

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 

雖然如果你不想在同一頁100倍,你可能會忘記添加a到URL。