2013-03-02 1 views
0

Я пытаюсь работать с данными из spinn3r. Данные возвращаются как protobuf. В Python, когда я печатаю объект Protobuf, я получаю это:Чтение protobuf в питоне. Извлечение данных

print data 
source { 
    link { 
    href: "" 
    resource: "" 
    } 
    canonical_link { 
    href: "http://twitter.com/_PattiShaw/statuses/28167079857225728" 
    resource: "" 
    } 
    title: "" 
    hashcode: "" 
    lang { 
    code: "en" 
    probability: -1.0 
    } 
    generator: "" 
    description: "" 
    last_posted: "" 
    last_published: "" 
    date_found: "" 
    publisher_type: "MICROBLOG" 
} 
feed { 
    link { 
    href: "" 
    resource: "" 
    } 
    canonical_link { 
    href: "" 
    resource: "" 
    } 
    title: "" 
    hashcode: "" 
    lang { 
    code: "en" 
    probability: -1.0 
    } 
    generator: "" 
    description: "" 
    last_posted: "" 
    last_published: "" 
    date_found: "" 
    etag: "" 
    channel_link { 
    href: "" 
    resource: "" 
    } 
} 
feed_entry { 
    link { 
    href: "http://twitter.com/_PattiShaw/statuses/28167079857225728" 
    resource: "http://twitter.com/_PattiShaw/statuses/28167079857225728" 
    } 
    canonical_link { 
    href: "http://twitter.com/_PattiShaw/statuses/28167079857225728" 
    resource: "http://twitter.com/_PattiShaw/statuses/28167079857225728" 
    } 
    title: "The value of a man resides in what he gives and not in what he is capable of receiving. ~ Albert Einstein" 
    hashcode: "8WhKLK9Lyng" 
    lang { 
    code: "en" 
    probability: -1.0 
    } 
    author { 
    name: "_PattiShaw (Patti Shaw)" 
    email: "" 
    link { 
     href: "http://twitter.com/_PattiShaw" 
    } 
    } 
    spam_probability: 0.0 
    last_published: "2011-01-20T19:08:49Z" 
    date_found: "2011-01-20T19:08:49Z" 
    identifier: 1295550574016007548 
    content { 
    mime_type: "text/html" 
    data: "x\332M\214\301\r\2000\014\304V\271\t`\201\n\211\007\033\[email protected]\003\215TR\324\226\362cv\020/\276\266\3459\010\032\305S\220V\020v2d)\352\[email protected]\rW\240\212\267\330\264\275\300\[email protected]\346]\317\003,\325\277\327\202\205\016\342\370m\262,\242Mm\353pc\214,\271bR+U\324\036\200\236&\363" 
    encoding: "zlib" 
    } 
} 
permalink_entry { 
    link { 
    href: "http://twitter.com/_PattiShaw/statuses/28167079857225728" 
    resource: "http://twitter.com/_PattiShaw/statuses/28167079857225728" 
    } 
    canonical_link { 
    href: "http://twitter.com/_PattiShaw/statuses/28167079857225728" 
    resource: "http://twitter.com/_PattiShaw/statuses/28167079857225728" 
    } 
    title: "The value of a man resides in what he gives and not in what he is capable of receiving. ~ Albert Einstein" 
    hashcode: "8WhKLK9Lyng" 
    lang { 
    code: "en" 
    probability: -1.0 
    } 
    author { 
    name: "_PattiShaw (Patti Shaw)" 
    email: "" 
    link { 
     href: "http://twitter.com/_PattiShaw" 
    } 
    } 
    spam_probability: 0.0 
    last_published: "2011-01-20T19:08:49Z" 
    date_found: "2011-01-20T19:09:34Z" 
    identifier: 1295550574016007548 
    content { 
    mime_type: "text/html" 
    data: "" 
    } 
    content_extract { 
    mime_type: "text/html" 
    data: "" 
    } 
    generator: "" 
} 

Я хочу, чтобы извлечь «имя автора» из «feed_entry» объекта. Я попытался это:

print data.feed_entry.author.name 

Я получаю ошибку:

AttributeError: 'RepeatedCompositeFieldContainer' object has no attribute 'name' 

Я попытался просто печать объекта автора, чтобы посмотреть, что происходит. Это то, что я получил:

print u.feed_entry.author 
[<spinn3rApi_pb2.Author object at 0x362e6d0>] 

Как извлечь это имя автора?

+0

Что вы получаете с 'реж (данные)'? – Salem

ответ

2

Похоже, что u.feed_entry.author - это список. Обратите внимание на квадратные скобки:

[<spinn3rApi_pb2.Author object at 0x362e6d0>] 

Это должно решить вашу проблему (если у вас есть по крайней мере один автор):

print data.feed_entry.author[0].name