我找到了一个构建类似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', ...]
正如所料,但我无法弄清楚如何下载文件的源代码。
答案 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))