从gitter解析讨论

时间:2015-09-09 18:36:16

标签: python parsing html-parsing

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

(DATE) USERNAME: MESSAGE

非常感谢

1 个答案:

答案 0 :(得分:1)

使用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-item父级中使用#chat-container类迭代所有元素。对于每个人,我们都会看到chat-item__textchat-item__fromchat-item__time