вопрос по питону urllib2 - PullRequest
0 голосов
/ 28 июня 2011

Я пытаюсь напечатать некоторую информацию из URL, но я хочу пропустить печать, если определенный текст, если найден, у меня есть:

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

so {"Response": "Parse Error"} - это текст, который я хочу найти, чтобы не печатать f.read () и загружать СЛЕДУЮЩИЙ URL (Номер 2)

Ответы [ 3 ]

0 голосов
/ 28 июня 2011

read читает блок данных.Фактический размер этого блока более чем вероятно превышает '{"Response":"Parse Error"}'.

Так что вы должны искать строку в прочитанных данных (см. Ответ @ harpyon), используя RE или strstr как.

0 голосов
/ 28 июня 2011

Я думаю, это то, что вы хотите:

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.

0 голосов
/ 28 июня 2011

Хотя ваш вопрос немного неясен, попробуйте следующее:

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

Это повторяется по каждой строке на веб-странице и останавливается на '{"Response":"Parse Error"}'.

Редактировать: Неважно, этоэто, вероятно, то, что вы хотите:

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

При этом будет распечатана вся веб-страница, если она не '{"Response":"Parse Error"}'.

...