Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Applikationen Probleme mit Anwendungsprogrammen aller Art gehören hier hin.

Tool zum Zerlegen von Websites gesucht

Diskussion: Tool zum Zerlegen von Websites gesucht im Forum Applikationen, in der Kategorie Software Home; Anzeige Klingt spannend, oder? Ist es aber nicht... Ich suche ein Tool, das den Content einer Website in seine Bestandteile ...

Antwort
Alt 27.10.11, 13:21   #1 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 441
Standard Tool zum Zerlegen von Websites gesucht

Anzeige

Klingt spannend, oder? Ist es aber nicht... Ich suche ein Tool, das den Content einer Website in seine Bestandteile zerlegen kann. Dabei sollte es optimalerweise möglich sein zu definieren welche Tag-IDs/Namen relevant sind. Beispiel: Ich habe eine HTML-Datei die aus diversen DIVs besteht, die alle eindeutig benannt sind. Ich möchte nun aus bestimmten DIVs den Content extrahieren und in eine Datenbank schreiben oder in einer XML-Struktur abspeichern.

Kennt jemand was passendes oder ein OSS-Tool, das man entsprechend modifizieren kann, so dass es die gewünschte Aufgabe übernehmen kann?

__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist gerade online   Mit Zitat antworten
Alt 27.10.11, 13:27   #2 (permalink)
Member of Honour
 
Benutzerbild von xrayn
 
Registriert seit: 05.03.08
xrayn Leistung: Opteronxrayn Leistung: Opteronxrayn Leistung: Opteronxrayn Leistung: Opteronxrayn Leistung: Opteron
Likes: 246
Standard

Es gibt bei Python ne Bibliothek mit der solche Aufgaben relativ leicht erledigt werden können: 19.13. xml.etree.ElementTree ? The ElementTree XML API — Python v2.7.2 documentation Damit sollte es kein Problem sein dein Problem in unter 50 Zeilen zu erledigen.
xrayn ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 27.10.11, 13:36   #3 (permalink)
 
Benutzerbild von she3p
 
Registriert seit: 07.05.07
she3p Leistung: 8086
Likes: 19
Standard

Obwohl eigentlich keine "Applikation" im klassischen Sinne, fällt mir hier SizzleJS ein.

Zitat:
A pure-JavaScript CSS selector engine designed to be easily dropped in to a host library.
In Verbindung mit (bsp.) Greasemonkey würde sich das was machen lassen.

(SizzleJs ist übrigens Bestandteil von jQuery)
__________________
she3p ist offline   Mit Zitat antworten
Alt 27.10.11, 13:55   #4 (permalink)
Senior Member
 
Benutzerbild von lookshe
 
Registriert seit: 10.03.07
lookshe Leistung: 8086
Likes: 19
Standard

Bei Perl eignet sich Web::Scraper dafür. Habe ich genutzt um bspw. Wikipedia auszulesen (Beispiel)

Hier mal der relevant Codeausschnitt:

Code:
  32    $scrap = scraper {
  33       process '//div[@id="bodyContent"]/p', 'text[]' => 'TEXT';
  34       process '//img', 'img[]' => '@src';
  35       process '//div[@id="bodyContent"]/ul/li', 'list[]' => 'TEXT';
  36       process '//table/tr/td', 'table[]' => 'TEXT';
  37    };
  38    $url = URI->new($wikiurl);
  39 
  40    my $res = $scrap->scrape($url);
  41    my $text = $res->{'text'};
  42    my $img = $res->{'img'};
  43    my $list = $res->{'list'};
  44    my $table = $res->{'table'};
lookshe ist offline   Mit Zitat antworten
Alt 27.10.11, 15:21   #5 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

@xrayn:
dann führe doch mal aus
Code:
>>> from xml.etree.ElementTree import ElementTree
>>> import urllib
>>> content=urllib.urlopen("http://hackerboard.de").read()
>>> tree=ElementTree.fromstring(content)
Es mag nicht wirklich HTML.
Ich würde eher zu BeautifulSoup tendieren:
Beautiful Soup documentation
Code:
>easy_install BeautifulSoup
>python
>>> import urllib
>>> content=urllib.urlopen("http://hackerboard.de").read()
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup(content)
>>> divs = soup.findAll('div', id="wrapper")
>>> divs[0].contents[1]
<div id="header-tabs"><a href="http://wiki.hackerboard.de" title="Hackerboard Wi
ki"><img src="http://www.hackerboard.de/images/habo/misc/wiki_tab.png" border="0" alt="Hackerboard Wiki" /
></a><a href="http://www.haboweb.de" title="HaboWeb Linkverzeichnis"><img src="i
mages/habo/misc/haboweb_tab.png" border="0" alt="HaboWeb Linkverzeichnis" /></a>
</div>
>>> divs[0].contents[1].find("img")
<img src="http://www.hackerboard.de/images/habo/misc/wiki_tab.png" border="0" alt="Hackerboard Wiki" />
oder
Code:
>>> all_divs = soup.findAll("div", id = re.compile("w.*"))
>>> [div.get("id") for div in all_divs]
[u'wrapper', u'rounded-wrap']
>>> all_divs[0].find("img")
<img src="http://www.hackerboard.de/images/habo/misc/wiki_tab.png" border="0" alt="Hackerboard Wiki" />
also z.B
alle divs in einen Dict und dann zu XML
Code:
>>> divs = dict([(div.get("id"), div.contents) for div in soup.findAll("div")])
>>> divs.keys()
[u'wrapper', u'rounded-wrap', u'navbsr', u'footer', u'rounded-top', u'footer-tex
t', u'rounded-bottom', None, u'naeXTReMe', u'header-tabs']
>>> import sys
>>> from xml.dom.minidom import *
>>> doc = Document();
>>> root = doc.createElement("mydivs")
>>> doc.appendChild(root)
<DOM Element: mydivs at 0x35ed688>
>>> for id, contents in divs.items():
...   if not(id):
...       continue
...   node = doc.createElement(id)
...   root.appendChild(node)
...   for content in contents:
...     try:
...       node.appendChild(doc.createTextNode(str(content.text[:20])))
...     except AttributeError:
...       pass
Ergebnis   

Code:
>>> print doc.toprettyxml(indent='\t')
<?xml version="1.0" ?>
<mydivs>
        <wrapper>

                [HaBo]
                RegistrierenTutorial

                BenutzernameKennwort
                Impressum-KontaktHac
        </wrapper>
        <rounded-wrap>

                BenutzernameKennwort
                &amp;nbsp;
                &lt;!--
google_ad_clie
                Alle Zeitangaben in

        </rounded-wrap>
        <navbsr>
                BenutzernameKennwort
                Willkommen im [HaBo]
        </navbsr>
        <footer>
                Impressum-KontaktHac
                -- HaBo 2.0-- Z Seri
        </footer>
        <rounded-top>

        </rounded-top>
        <footer-text>
                13:49

                vBulletin Skins
                ForumMonkeys

        </footer-text>
        <rounded-bottom>

        </rounded-bottom>
        <naeXTReMe>

        </naeXTReMe>
        <header-tabs>


        </header-tabs>
</mydivs>
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 27.10.11, 15:26   #6 (permalink)
 
Registriert seit: 12.08.10
mime Leistung: Pentium Imime Leistung: Pentium I
Likes: 30
Standard

Zitat:
Zitat von bitmuncher Beitrag anzeigen
Kennt jemand was passendes oder ein OSS-Tool, das man entsprechend modifizieren kann, so dass es die gewünschte Aufgabe übernehmen kann?
Nein, aber das ganze hört sich so an als ob http://search.cpan.org/~kawasaki/HTML-TagParser-0.16/lib/HTML/TagParser.pm sein könnte was du suchst.

HTH

Micha
__________________
http://www.openvas.org
mime ist offline   Mit Zitat antworten
Alt 27.10.11, 15:28   #7 (permalink)
Moderator
Themenstarter
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 441
Standard

Danke erstmal für die vielen Tipps. Ein fertiges Tool wäre zwar besser, aber ich schau mal, was ich da zusammenschrauben kann.
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist gerade online   Mit Zitat antworten
Alt 29.10.11, 04:55   #8 (permalink)
 
Benutzerbild von blue182
 
Registriert seit: 21.08.10
blue182 Leistung: Facit NTK
Likes: 10
Standard

Wozu ein Tool, wenn es das DOM gibt?
Zitat:
What is the DOM?

The DOM is a W3C (World Wide Web Consortium) standard.
The DOM defines a standard for accessing documents like HTML and XML:
"The W3C Document Object Model (DOM) is a platform and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document."
HTML DOM Tutorial
blue182 ist offline   Mit Zitat antworten
Alt 29.10.11, 05:23   #9 (permalink)
Moderator
Themenstarter
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 441
Standard

Zitat:
Zitat von blue182 Beitrag anzeigen
Wozu ein Tool, wenn es das DOM gibt?
Wozu selbst was coden, wenn es evtl. ein passendes Tool bereits gibt? Und um rauszubekommen, ob es ein solches Tool bereits gibt, gibt's diesen Thread.

Abgesehen davon ist DOM nur eine Spezifikation. Die bringt in Sachen Arbeitsersparnis mal so überhaupt nichts.
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist gerade online   Mit Zitat antworten
Alt 29.10.11, 16:05   #10 (permalink)
 
Benutzerbild von blue182
 
Registriert seit: 21.08.10
blue182 Leistung: Facit NTK
Likes: 10
Standard

Zitat:
Zitat von bitmuncher Beitrag anzeigen
Wozu selbst was coden, wenn es evtl. ein passendes Tool bereits gibt? Und um rauszubekommen, ob es ein solches Tool bereits gibt, gibt's diesen Thread.

Abgesehen davon ist DOM nur eine Spezifikation. Die bringt in Sachen Arbeitsersparnis mal so überhaupt nichts.
Ich glaube mit einem DOM Parser bist du besser beholfen, als dich im Internet tot-zu-suchen nach einem OSS Projekt, was ggf. dann nicht einmal deinen Erwartungen entspricht.
blue182 ist offline   Mit Zitat antworten
Alt 31.10.11, 19:02   #11 (permalink)
 
Benutzerbild von she3p
 
Registriert seit: 07.05.07
she3p Leistung: 8086
Likes: 19
Standard

Naja, musst du die extrahierten Daten irgendwie parsen können? Oder gehts dir rein um die Information?

(Edit: sry für die Frage, habs soeben gelesen. Ich lass es trotzdem mal stehn )

Wie wärs beispielsweise mit XPath? Ich benutze dies teilweise in Kombination mit Firebug (Plugin fürs Plugin).



Ich schätze es gibt auch andere Implementationen, falls dir FF/Firebug nicht zusagt. Allerdings unter uns: Natürlich ist dies DOM-Parsing sehr nah, aber vielleicht hilft ja nur schon das Stichwort.
__________________

Geändert von she3p (31.10.11 um 22:07 Uhr)
she3p ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Applikationen » Tool zum Zerlegen von Websites gesucht
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Macro-Tool gesucht overflow Windows 5 10.08.11 19:19
Tool um Websites runterzuladen Pro|P|le|h|m Doppelte Beiträge 1 15.10.07 16:35
Kalender tool gesucht nonpretium (Web-) Design und webbasierte Sprachen 1 14.03.07 15:01
Tool gesucht Moskito83 Applikationen 2 14.03.05 00:19
Tool für Sonderzeichen gesucht? study19 Applikationen 2 09.02.04 12:49


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61