2016-03-29 10 views
0

Ich habe einen Python-HTML-Parser gefunden, der eine Dom-ähnliche Struktur für HTML-Quellen erstellt, es scheint einfach zu bedienen und sehr schnell. Ich versuche, einen Schaber für codepad.org zu schreiben, die die letzten zehn Beiträge von http://codepad.org/recentDie letzten zehn Einträge von codepad.org mit Easy Html Parser (EHP) python

Die EHP lib bei https://github.com/iogf/ehp ist abruft ich habe diesen Code unten, dass funktioniert.

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  

es gibt:

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

wie erwartet, aber ich kann nicht herausfinden, wie Sie den Quellcode der Dateien zum Download bereit.

Antwort

0

Eigentlich tun Ihre retrieve_source(refs, dir) nichts.

So erhalten Sie kein Ergebnis.

-Update nach Ihren Kommentar:

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)) 
+0

Ja, aber es gibt mir die html Ich brauche nur den Quellcode, der geschrieben wurde, es zu bekommen? –

+0

huh, Sie haben nicht richtig über 'Quellcode' geklärt, so dass es aussieht wie der Quellcode der Seite. Für Snippets mit Quellcode müssen Sie tatsächlich Parsing-Teile schreiben. –