使用Easy Html Parser(EHP)python获取最后十个codepad.org帖子

时间:2016-03-29 14:02:39

标签: python html parsing scraper

我找到了一个构建类似dom结构的python html解析器 对于HTML源代码,它似乎易于使用且速度非常快。我试图为codepad.org编写一个刮刀,用于检索最后十个帖子 http://codepad.org/recent

EHP lib位于https://github.com/iogf/ehp 我有以下代码正在运行。

import requests
from ehp import Html

def catch_refs(data):
    html = Html()
    dom = html.feed(data)

    return [ind.attr['href']
                for ind in dom.find('a')
                    if 'view' in ind.text()]

def retrieve_source(refs, dir):
    """
    Get the source code of the posts then save in a dir.
    """
    pass


if __name__ == '__main__':
    req  = requests.get('http://codepad.org/recent')
    refs = catch_refs(req.text)
    retrieve_source(refs, '/tmp/')
    print refs    

输出:

[u'http://codepad.org/aQGNiQ6t', 
 u'http://codepad.org/HMrG1q7t', 
 u'http://codepad.org/zGBMaKoZ', ...]

正如所料,但我无法弄清楚如何下载文件的源代码。

1 个答案:

答案 0 :(得分:0)

实际上,retrieve_source(refs, dir)没有做任何事情。

所以你没有得到任何结果。

根据您的评论更新:

import os


def get_code_snippet(page):
    dom = Html().feed(page)
    # getting all <div class=='highlight'>
    elements = [el for el in dom.find('div')
                if el.attr['class'] == 'highlight']
    return elements[1].text()

def retrieve_source(refs, dir):
    for i, ref in enumerate(refs):
        with open(os.path.join(dir, str(i) + '.html'), 'w') as r:
            r.write(get_code_snippet(requests.get(ref).content))