| Applikationen Probleme mit Anwendungsprogrammen aller Art gehören hier hin. |
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 ...
![]() |
| | #1 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Anzeige Klingt spannend, oder? 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+ |
| | |
| | #2 (permalink) |
| Member of Honour ![]() Registriert seit: 05.03.08 ![]() ![]() ![]() ![]() ![]() Likes: 246 | 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. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) | |
| Registriert seit: 07.05.07 ![]() Likes: 19 | Obwohl eigentlich keine "Applikation" im klassischen Sinne, fällt mir hier SizzleJS ein. Zitat:
(SizzleJs ist übrigens Bestandteil von jQuery)
__________________ | |
| | |
| | #4 (permalink) |
| Senior Member Registriert seit: 10.03.07 ![]() Likes: 19 | 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'}; |
| | |
| | #5 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | @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) 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" /> 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" /> 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
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #6 (permalink) | |
| Registriert seit: 12.08.10 ![]() ![]() Likes: 30 | Zitat:
HTH Micha
__________________ http://www.openvas.org | |
| | |
| | #7 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | 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+ |
| | |
| | #8 (permalink) | |
| Registriert seit: 21.08.10 ![]() Likes: 10 | Wozu ein Tool, wenn es das DOM gibt? Zitat:
| |
| | |
| | #9 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | 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+ |
| | |
| | #10 (permalink) |
| Registriert seit: 21.08.10 ![]() Likes: 10 | 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. |
| | |
| | #11 (permalink) |
| Registriert seit: 07.05.07 ![]() Likes: 19 | 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) |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ä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 |