从 gitter 解析讨论

Parsing discussion from gitter

我想从gitter上复制一些讨论。例如。这个2015/08/19 archive。问题是简单的 ctrl+a 和 ctrl+c 不会复制用户名和日期。这些信息包含在页面的源代码中。最简单的方法是什么?我更喜欢 python 中的最小工作示例(几乎没有代码解释)。格式可以是例如:

(DATE) USERNAME: MESSAGE

非常感谢

这在使用 requests 库和 beautifulsoup4 时非常简单(都可以使用相同的名称安装 PIP)。

gitter.py

import requests
from bs4 import BeautifulSoup


markup_str = requests.get("https://gitter.im/numenta/public/archives/2015/08/19").content
soup = BeautifulSoup(markup_str, 'html.parser')

chat_container = soup.find(id='chat-container')
chat_items = chat_container.find_all(class_='chat-item')

for chat_item in chat_items:
    msg = chat_item.find(class_='chat-item__text').get_text().strip()
    poster = chat_item.find(class_='chat-item__from').get_text().strip()
    posted_at = chat_item.find(class_='chat-item__time').get_text().strip()
    print "({}) {}: {}".format(posted_at, poster, msg)

当运行时输出:

(Aug 19 00:09) rhyolight: I just released NuPIC 0.2.7
(Aug 19 00:09) rhyolight: waiting on the build to publish binaries
(Aug 19 00:09) rhyolight: https://github.com/numenta/nupic/releases/tag/0.2.7
(Aug 19 01:48) rhyolight: https://travis-ci.org/numenta/nupic/builds/76213223
[...snip...]

我们基本上只是迭代 #chat-container 父级中 chat-item 的 class 的所有元素。对于他们每个人,我们阅读 chat-item__textchat-item__fromchat-item__time