【问题标题】:python urllib2 questionpython urllib2 问题
【发布时间】:2011-06-27 22:04:53
【问题描述】:

我正在尝试从 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

所以 {"Response":"Parse Error"} 是我要查找的文本,以避免打印 f.read() 并加载 NEXT url(编号 2)

【问题讨论】:

    标签: python json printing urllib2


    【解决方案1】:

    虽然你的问题有点不清楚,但试试这个:

    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"}'

    【讨论】:

    • 是的 .readlines() 是我需要的,但我需要循环继续运行,只需跳过打印,我将重新格式化我的问题。
    【解决方案2】:

    read 读取数据块。这个块的实际大小很可能大于'{"Response":"Parse Error"}'

    因此,您应该使用 RE 或 strstr like 在读取的数据中搜索字符串(请参阅@harpyon 的答案)。

    【讨论】:

    • 不,这是一个 json,只打印 '{"Response":"Parse Error"}'
    【解决方案3】:

    我想这就是你想要的:

    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 次,您可能已经忘记在 URL 中添加 a

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 2011-01-25
      • 2011-06-21
      • 2010-09-29
      • 1970-01-01
      • 2012-05-20
      • 2012-07-27
      相关资源
      最近更新 更多