2016-06-05 9 views

Antwort

0

versuchen Sie es mit regulären Ausdrücken und gab mir nicht das erwartete Ergebnis. Was ich letztendlich gelöst habe, war dieser Code. Ich bin wirklich flexibler und dynamischer. auch lassen sich die Ergebnisse in neue HTML-Dateien

import random 
import os 
import subprocess 
from lxml import html 
from lxml.html.clean import clean_html 
from lxml.html import tostring, html5parser 
import glob 
from lxml import html 

#print glob.glob("*.html") 
for itemfile in glob.glob("*.html"): 
    if os.path.isfile(itemfile): 
     f = open(itemfile, 'rb') 
     data = f.read() 
     f.close() 
     dochtml = html.fromstring(data) 
     for element, attribute, link, pos in dochtml.iterlinks(): 
     if element.tag in ("img","a"): 
     if attribute == "src": 
      element.set('src', "") 
      element.set('alt', "") 
     if attribute == "href": 
      element.set('href', "") 
     #print tostring(dochtml) 
     parser = tostring(dochtml, method='html') 
     f = open(itemfile[:itemfile.find(".html")] + "_parser.html", 'wb') 
     f.write(parser) 
     f.close()   
    else: 
     print 'not file.' 
0

ich das unten stehende Programm ausprobiert und es funktioniert gut für Ihre Eingabe. Schau es dir einfach an.

import re 
s='<a href="http://helloword.com"><img src="hola.png" alt="hola"></a>' 
r=re.sub('".*?"','""',s) 
print r 

Es ausdrucken:

<a href=""><img src="" alt=""></a> 
+0

Die Idee ist, dass ich jeden Inhalt löschen kann, der sich in diesen Tags befindet. könnte auch mehrere Links oder Tags sein. –

+0

Sag mir deine Anforderung klar. Sie sagen, meine Lösung funktioniert nicht für Sie? Wenn ja, sag mir wie –

+0

Meine Absicht ist nicht für mich zu arbeiten, aber ich verstehe Ihren Standpunkt. Ich weiß es zu schätzen, dass Sie mir eine Idee gegeben haben, ich werde versuchen, das Skript mit regulären Ausdrücken zu machen. Grüße –

0

Es ist so einfach, mit BeautifulSoup zu retten ... Ich weiß nicht, warum Sie so viel Code verwenden. Dadurch wird der Inhalt dieser href-, alt- und src-Tags durch eine leere Zeichenfolge ersetzt.

Ich werde diese verwenden, anstatt lxml ...

from bs4 import BeautifulSoup 

soup = BeautifulSoup('<a href="http://helloword.com"><img src="hola.png" alt="hola"></a>', 'html.parser') 
href = soup.find('a').attrs.get('href') 
alt = soup.find('img').attrs.get('alt') 
src= soup.find('img').attrs.get('src') 

text = str(soup).replace(href, '').replace(src,'').replace(alt,'') 
print text 
+0

Ich denke, es ist nicht viel Code, wenn Sie in einen Ordner alle HTML-Dateien bekommen wollen, analysieren und neue HTML-Dateien mit dem Ergebnis hinzufügen. In dem Code, den Sie vorschlagen, muss ich HTML-Code kopieren und einfügen und das Ergebnis von der Konsole erhalten, aber trotzdem ist eine andere ausgezeichnete Wahl und ich danke Ihnen für den Beitrag. –

+0

Es ist mein Beispiel ... wenn Sie Anfragen ... oder urllib verwenden, müssen Sie den Code nicht per Konsole bekommen :) nur: source_code = requests.get (my_url) .content – simopopov

Verwandte Themen