Optionen für HTML Schaben?

stimmen
378

Ich denke an versucht , schöne Suppe , ein Python - Paket für HTML Schaben. Gibt es noch andere HTML - Schaben - Pakete ich suchen sollte? Python ist keine Voraussetzung, ich auch zu hören , über andere Sprachen wirklich interessiert bin.

Was bisher geschah:

Veröffentlicht am 05/08/2008 um 22:09
quelle vom benutzer
In anderen Sprachen...                            


40 antworten

stimmen
54

Die äquivalente Ruby Welt Schöne Suppe ist die why_the_lucky_stiff Hpricot .

Beantwortet am 05/08/2008 um 22:13
quelle vom benutzer

stimmen
39

In der .NET-Welt, empfehle ich das HTML Agility-Pack. Nicht annähernd so einfach, wie einige der oben genannten Optionen (wie HTMLSQL), aber es ist sehr flexibel. Es lässt Sie maniuplate schlecht HTML gebildet, als ob es gut XML gebildet wurden, so können Sie XPATH oder nur itereate über Knoten verwenden.

http://www.codeplex.com/htmlagilitypack

Beantwortet am 07/08/2008 um 19:38
quelle vom benutzer

stimmen
32

BeautifulSoup ist eine großartige Möglichkeit für HTML Kratzen zu gehen. Mein früherer Job hatte mir viel kratzen tun, und ich wünsche, dass ich über BeautifulSoup wusste, als ich anfing. Es ist wie das DOM mit viel mehr nützlichen Optionen und ist viel mehr pythonic. Wenn Sie Ruby versuchen wollen portiert sie BeautifulSoup nannte es RubyfulSoup aber hat es eine Weile nicht mehr aktualisiert worden.

Andere nützliche Werkzeuge sind HTMLParser oder sgmllib.SGMLParser, der Teil der Standard-Python-Bibliothek ist. Diese Arbeit durch Aufrufe von Methoden jedes Mal, wenn Sie öffnen / schließen Sie einen Tag und Begegnung html Text. Sie sind wie Expat, wenn Sie mit dem vertraut sind. Diese Bibliotheken sind besonders nützlich, wenn Sie sich zu sehr großen Dateien zu analysieren und die Schaffung eines DOM-Baum lange und teuer wäre.

Reguläre Ausdrücke sind nicht sehr notwendig. BeautifulSoup Griffe reguläre Ausdrücke so, wenn Sie ihre Leistung benötigen Sie es dort nutzen können. Ich sage mit BeautifulSoup gehen, wenn Sie Geschwindigkeit und einen kleineren Speicherbedarf benötigen. Wenn Sie einen besseren HTML-Parser auf Python finden, lassen Sie es mich wissen.

Beantwortet am 07/08/2008 um 19:18
quelle vom benutzer

stimmen
18

Ich fand HTMLSQL eine lächerlich einfache Möglichkeit , um screenscrape. Es dauert nur wenige Minuten zu den Ergebnisse mit ihm.

Die Abfragen sind super-intuitiv - wie:

SELECT title from img WHERE $class == 'userpic'

Inzwischen gibt es einige andere Alternativen, die den gleichen Ansatz.

Beantwortet am 07/08/2008 um 19:31
quelle vom benutzer

stimmen
16

Der Python lxml Bibliothek fungiert als Pythonic Bindung für die libxml2 und libxslt Bibliotheken. Ich mag vor allem seine Unterstützung von XPath und ziemlich Druck der In-Memory - XML - Struktur. Es unterstützt auch gebrochen HTML Parsing. Und ich glaube nicht , dass Sie andere Bibliotheken Python finden / Bindungen , die XML - Parsen schneller als lxml.

Beantwortet am 17/09/2008 um 13:44
quelle vom benutzer

stimmen
15

Für Perl gibt es WWW :: Mechanize.

Beantwortet am 06/08/2008 um 00:37
quelle vom benutzer

stimmen
11

Warum hat niemand erwähnt JSOUP noch für Java? http://jsoup.org/

Beantwortet am 10/02/2012 um 20:42
quelle vom benutzer

stimmen
11

‚Simple HTML DOM Parser‘ ist eine gute Option für PHP, wenn Ihr vertraut mit jQuery oder JavaScript-Selektoren, dann werden Sie sich wie zu Hause finden.

Finden Sie es hier

Es gibt auch eine Blog-Post über sie hier.

Beantwortet am 31/07/2009 um 20:39
quelle vom benutzer

stimmen
10

Python hat mehrere Optionen für HTML neben Schöne Suppe Schaben. Hier sind einige andere:

  • mechanisieren : ähnlich wie Perl WWW:Mechanize. Gibt Ihnen einen Browser wie Objekt mit Web - Seiten ineract
  • lxml : Python - Bindung an libwww. Verschiedene Optionen unterstützt zu durchqueren , und wählen Sie Elemente (zB XPath und CSS - Auswahl)
  • scrapemark : hohe Bibliothek Level - Vorlagen mit Informationen aus HTML zu extrahieren.
  • pyquery : Damit können Sie jQuery wie Abfragen auf XML - Dokumenten machen.
  • scrapy : ein hohes Maß Schaben und Web - Crawling - Rahmen. Es kann verwendet werden , Spinnen zu schreiben, für Data Mining und zur Überwachung und automatisierte Tests
Beantwortet am 28/12/2009 um 17:59
quelle vom benutzer

stimmen
9

Das templatemaker Dienstprogramm von Adrian Holovaty (von Django Ruhm) verwendet einen sehr interessanten Ansatz: Sie füttern es Variationen derselben Seite und es „lernt“ , wo die „Löcher“ für variable Daten sind. Es ist HTML nicht spezifisch, so wäre es zum Schaben anderen Klartext Inhalts als auch gut sein. Ich habe es auch für PDF - Dateien verwendet , und HTML - Format konvertiert auf Plaintext (mit pdftotext und Luchs, respectively).

Beantwortet am 18/09/2008 um 21:13
quelle vom benutzer

stimmen
7

Ich kenne und liebe Bildschirm-Schaber .

Screen-Scraper ist ein Werkzeug, um Daten von Webseiten zu extrahieren. Screen-Scraper automatisiert:

* Clicking links on websites
* Entering data into forms and submitting
* Iterating through search result pages
* Downloading files (PDF, MS Word, images, etc.)

Gemeinsame Nutzung:

* Download all products, records from a website
* Build a shopping comparison site
* Perform market research
* Integrate or migrate data

Technisch:

* Graphical interface--easy automation
* Cross platform (Linux, Mac, Windows, etc.)
* Integrates with most programming languages (Java, PHP, .NET, ASP, Ruby, etc.)
* Runs on workstations or servers

Drei Ausgaben von Bildschirm-Scraper:

* Enterprise: The most feature-rich edition of screen-scraper. All capabilities are enabled.
* Professional: Designed to be capable of handling most common scraping projects.
* Basic: Works great for simple projects, but not nearly as many features as its two older brothers.
Beantwortet am 16/08/2009 um 21:56
quelle vom benutzer

stimmen
7

Ich würde zuerst herausfinden, ob die Website (s) in Frage einen API-Server zur Verfügung stellen oder RSS-Feeds für den Zugriff der Daten, die Sie benötigen.

Beantwortet am 05/08/2008 um 22:11
quelle vom benutzer


stimmen
5

Ich habe einen gewissen Erfolg mit hatte Htmlunit , in Java. Es ist ein einfacher Rahmen für das Schreiben von Unit - Tests auf Web - UI, aber ebenso nützlich für HTML Schaben.

Beantwortet am 31/08/2008 um 13:09
quelle vom benutzer

stimmen
5

Eine weitere Option für Perl wäre Web :: Scraper , die auf Rubys basiert Scrapi . Auf dem Punkt gebracht, mit schöner und prägnanten Syntax können Sie einen robusten Schaber direkt in Datenstrukturen erhalten.

Beantwortet am 26/08/2008 um 23:46
quelle vom benutzer

stimmen
5

Scraping Stack - Überlauf ist besonders einfach mit Schuhen und Hpricot .

require 'hpricot'

Shoes.app :title => "Ask Stack Overflow", :width => 370 do
  SO_URL = "http://stackoverflow.com"
  stack do
    stack do
      caption "What is your question?"
      flow do
        @lookup = edit_line "stackoverflow", :width => "-115px"
        button "Ask", :width => "90px" do
          download SO_URL + "/search?s=" + @lookup.text do |s|
            doc = Hpricot(s.response.body)
            @rez.clear()
            (doc/:a).each do |l|
              href = l["href"]
              if href.to_s =~ /\/questions\/[0-9]+/ then
                @rez.append do
                  para(link(l.inner_text) { visit(SO_URL + href) })
                end
              end
            end
            @rez.show()
          end
        end
      end
    end
    stack :margin => 25 do
      background white, :radius => 20
      @rez = stack do
      end
    end
    @rez.hide()
  end
end
Beantwortet am 22/08/2008 um 11:20
quelle vom benutzer

stimmen
4

Es ist diese Lösung auch: netty Httpclient

Beantwortet am 11/05/2011 um 19:28
quelle vom benutzer

stimmen
4

Ein weiteres Werkzeug für .NET ist MhtBuilder

Beantwortet am 13/02/2009 um 13:58
quelle vom benutzer

stimmen
4

Obwohl es für entworfen wurde .NET Web-Tests, habe ich, die mit WatiN zu diesem Zweck Rahmen. Da es DOM-basiert ist, ist es recht einfach , HTML, Text oder Bilder zu erfassen. Kuerzlich, habe ich eine Liste von Links aus einer Dump MediaWiki Alle Seiten Namespace - Abfrage in eine Excel - Tabelle. Das folgende VB.NET - Code Bruchstück ist ziemlich grob, aber es funktioniert.


Sub GetLinks(ByVal PagesIE As IE, ByVal MyWorkSheet As Excel.Worksheet)

    Dim PagesLink As Link
    For Each PagesLink In PagesIE.TableBodies(2).Links
        With MyWorkSheet
            .Cells(XLRowCounterInt, 1) = PagesLink.Text
            .Cells(XLRowCounterInt, 2) = PagesLink.Url
        End With
        XLRowCounterInt = XLRowCounterInt + 1
    Next
End Sub
Beantwortet am 27/08/2008 um 10:43
quelle vom benutzer

stimmen
4

Ich habe schöne Suppe viel mit Python verwendet. Es ist viel besser , als reguläre Ausdruck Prüfung, weil es dergleichen verwendet funktioniert DOM , auch wenn die HTML schlecht formatiert ist. Sie können schnell HTML - Tags und Text mit einfacher Syntax als reguläre Ausdrücke finden. Sobald Sie ein Element finden, können Sie über ihn zu durchlaufen und seine Kinder, die für das Verständnis der Inhalte in Code ist nützlicher , als es mit regulären Ausdrücken ist. Ich wünsche schöne Suppe Jahren existierte , als ich eine Menge Screenscraping zu tun hatte - es würde mich viel Zeit und Kopfschmerzen gespeichert haben , da HTML - Struktur so schlecht war , bevor die Menschen die Validierung es angefangen hat .

Beantwortet am 22/08/2008 um 14:58
quelle vom benutzer

stimmen
4

Ich benutze Hpricot Ruby. Als Beispiel ist dies ein Code-Snippet, das ich verwende, um alle Buchtitel aus den sechs Seiten meines HireThings Kontos abrufen (wie sie eine Seite mit diesen Informationen nicht zur Verfügung zu stellen scheinen):

pagerange = 1..6
proxy = Net::HTTP::Proxy(proxy, port, user, pwd)
proxy.start('www.hirethings.co.nz') do |http|
  pagerange.each do |page|
    resp, data = http.get "/perth_dotnet?page=#{page}" 
    if resp.class == Net::HTTPOK
      (Hpricot(data)/"h3 a").each { |a| puts a.innerText }
    end
  end
end 

Es ist so ziemlich abgeschlossen. Alles, was kommt, bevor diese sind Bibliothek importiert und die Einstellungen für meine Proxy.

Beantwortet am 06/08/2008 um 06:57
quelle vom benutzer

stimmen
3

Nun, wenn Sie es von der Client - Seite getan wollen nur mit einem Browser , den Sie haben jcrawl.com . Nach Ihrer Verschrottung Service von der Web - Anwendung entwickelt hat ( http://www.jcrawl.com/app.html ), müssen Sie nur das generierte Skript in einer HTML - Seite hinzufügen , um Ihre Daten zu beginnen / präsentieren.

All die Verschrottung Logik geschieht auf dem Browser via JavaScript. Ich hoffe , Sie finden es nützlich. Klicken Sie auf diesen Link für ein anschauliches Beispiel, das die Extrakte neuesten Nachrichten von Yahoo Tennis .

Beantwortet am 29/10/2012 um 16:59
quelle vom benutzer

stimmen
3

Implementationen des HTML5 - Parsing - Algorithmus : html5lib (Python, Ruby), Validator.nu HTML - Parser (Java, JavaScript, C ++ in der Entwicklung), Hubbub (C), Twintsam (C #, in Kürze).

Beantwortet am 09/10/2008 um 21:53
quelle vom benutzer

stimmen
3

Sie wäre ein Narr, nicht Perl zu verwenden .. Hier kommen die Flammen ..

Knochen bis auf die folgenden Module und ginsu jeder um kratzen.

use LWP
use HTML::TableExtract
use HTML::TreeBuilder
use HTML::Form
use Data::Dumper
Beantwortet am 17/09/2008 um 13:56
quelle vom benutzer

stimmen
3

In Java können Sie verwenden tagsoup .

Beantwortet am 24/08/2008 um 11:32
quelle vom benutzer

stimmen
3

Ich habe verwendet LWP und HTML :: TreeBuilder mit Perl und haben sie sehr nützlich erwiesen.

LWP (kurz für libwww-perl) können Sie auf Websites verbinden und die HTML kratzen, können Sie das Modul hier und das O'Reilly Buch scheint hier online zu sein .

TreeBuilder ermöglicht es Ihnen , einen Baum aus dem HTML zu konstruieren und Dokumentation und Quelle in verfügbar ist HTML :: TreeBuilder - Parser, der einen HTML - Syntax - Baum aufbaut .

Es könnte zu viel schweres Heben sein noch wenn auch mit etwas wie diesen Ansatz zu tun. Ich habe nicht an der sah Mechanize Modul durch eine andere Antwort vorgeschlagen, so dass ich kann auch das tun.

Beantwortet am 17/08/2008 um 15:13
quelle vom benutzer

stimmen
2

Ich mag Google Text & Tabellen ImportXML (URL, XPath) -Funktion.

Es wiederholt sich Zellen in der Spalte, wenn Ihr XPath-Ausdruck mehr als einen Wert zurückgibt.

Sie können bis zu 50 haben importxml()auf einem Tabellenkalkulationsfunktionen.

Rapidminer Web - Plugin ist auch ziemlich einfach zu bedienen. Es kann Beiträge tun, Cookies akzeptiert, und die setzen können User-Agent .

Beantwortet am 22/07/2010 um 05:31
quelle vom benutzer

stimmen
2

Ich habe auch großen Erfolg mit Aptana der Jaxer + jQuery Seiten zu analysieren. Es ist nicht so schnell oder ‚Skript-like‘ in der Natur, aber jQuery Selektoren + echte JavaScript / DOM ist ein lebensretter auf komplizierteren (oder fehlerhaften) Seiten.

Beantwortet am 19/11/2008 um 20:11
quelle vom benutzer

stimmen
2

Ich habe gemischte Ergebnisse in .NET hatte SgmlReader verwendet , die von ursprünglich gestartet wurde Chris Lovett und scheint durch aktualisiert wurden Deki .

Beantwortet am 27/08/2008 um 19:49
quelle vom benutzer

stimmen
2

Sie haben wahrscheinlich schon so viel, aber ich denke, das ist, was Sie zu tun versuchen:

from __future__ import with_statement
import re, os

profile = ""

os.system('wget --no-cookies --header "Cookie: soba=(SeCreTCODe)" http://stackoverflow.com/users/30/myProfile.html')
with open("myProfile.html") as f:
    for line in f:
        profile = profile + line
f.close()
p = re.compile('summarycount">(\d+)</div>') #Rep is found here
print p
m = p.search(profile)
print m
print m.group(1)
os.system("espeak \"Rep is at " + m.group(1) + " points\""
os.remove("myProfile.html")
Beantwortet am 05/08/2008 um 23:58
quelle vom benutzer

stimmen
1

Ich mache eine Menge fortschrittlicher Web - Scraping so die volle Kontrolle über meinen Stack und zu verstehen , die Grenzen haben wollte. Diese Screen Scraping - Bibliothek ist das Ergebnis.

Beantwortet am 12/04/2011 um 01:20
quelle vom benutzer

stimmen
1

Ich habe Feedity benutze - http://feedity.com für einige der Schaben Arbeit (und die Umwandlung in RSS - Feeds) in meiner Bibliothek. Es funktioniert gut für die meisten Web - Seiten.

Beantwortet am 01/12/2010 um 06:28
quelle vom benutzer

stimmen
1

Die jüngste Diskussion von Dav Glass Willkommen im Dschungel! (YUIConf 2011 Eröffnung Keynote) zeigt , wie Sie verwenden können , YUI 3 auf Node.js client-like - Programmierung (mit DOM - Selektoren statt String - Verarbeitung) auf dem Server zu tun. Es ist sehr beeindruckend.

Beantwortet am 22/11/2010 um 18:04
quelle vom benutzer

stimmen
1

Für komplexere Anwendungen Schaben, würde ich die IRobotSoft Web Scraper empfehlen. Es ist eine spezielle kostenlose Software für Screen Scraping. Es hat eine starke Abfragesprache für HTML-Seiten, und es bietet eine sehr einfache Web-Recording-Interface, die Sie von vielen Programmieraufwand befreien.

Beantwortet am 17/05/2010 um 16:58
quelle vom benutzer

stimmen
1

Scrubyt verwendet Ruby und Hpricot schön und einfach Web - Scraping zu tun. Ich schrieb einen Schaber für meine Universität Bibliotheksdienst dies in etwa 30 Minuten mit.

Beantwortet am 25/08/2008 um 13:02
quelle vom benutzer

stimmen
1

Reguläre Ausdrücke funktionieren ziemlich gut für HTML Schaben auch ;-) Obwohl nach an schöner Suppe sucht, kann ich sehen, warum dies ein wertvolles Werkzeug sein würde.

Beantwortet am 05/08/2008 um 22:29
quelle vom benutzer

stimmen
0

Wenn es darum geht , Daten aus einem HTML - Dokument auf der Server-Seite zu extrahieren, Node.js ist eine fantastische Wahl. Ich habe es erfolgreich mit zwei Modulen genannt verwendet Anfrage und cheerio .

Sie können ein Beispiel sehen , wie es funktioniert hier .

Beantwortet am 10/05/2013 um 19:28
quelle vom benutzer

stimmen
0

Ich habe ein sehr schönes Bibliothek Internet Tools für Web - Scraping.

Die Idee ist, eine Vorlage gegen die Web-Seite zu entsprechen, die alle Daten aus der Seite extrahieren und auch überprüfen, ob die Seitenstruktur ist unverändert.

So können Sie nehmen einfach den HTML-Code der Webseite, die Sie bearbeiten möchten, entfernen Sie alle dynamischen oder irrelevanten Inhalten und die interessanten Teile mit Anmerkungen versehen.

ZB die HTML für eine neue Frage auf der stackoverflow.com Index Seite lautet:

<div id="question-summary-11326954" class="question-summary narrow">

    <!-- skipped, this is getting too long -->

    <div class="summary">

        <h3><a title="Some times my tree list have vertical scroll ,then I scrolled very fast and the tree list shivered .Have any solution for this.
" class="question-hyperlink" href="/questions/11326954/about-scroll-bar-issue-in-tree">About Scroll bar issue in Tree</a></h3>

    <!-- skipped -->

    </div>
</div>

So Sie ihn nur bestimmte ID, Titel und Zusammenfassung entfernen, um eine Vorlage zu erstellen, die alle neue Fragen in Titel, Zusammenfassung, Link-Arrays gelesen werden:

 <t:loop>
   <div class="question-summary narrow">
     <div class="summary">
       <h3>
          <a class="question-hyperlink">
            {title:=text(), summary:=@title, link:=@href}
          </a>
       </h3>
     </div>
   </div>
 </t:loop>

Und natürlich unterstützt es auch die grundlegenden Techniken, CSS 3-Selektoren, XPath 2 und XQuery-1 Ausdrücke.

Das einzige Problem ist , dass ich so dumm war es ein machen Free Pascal Bibliothek. Aber es gibt auch sprachunabhängige Web - Demo .

Beantwortet am 04/07/2012 um 11:43
quelle vom benutzer

stimmen
0

Für diejenigen, die einen grafischen Workflow-Tool, Rapidminer (FOSS) hat eine schöne Web-Crawling und Schaben Anlage bevorzugen.

Hier ist eine Reihe von Videos:

http://vancouverdata.blogspot.com/2011/04/rapidminer-web-crawling-rapid-miner-web.html

Beantwortet am 04/04/2011 um 23:44
quelle vom benutzer

stimmen
-1

SharpQuery

Es ist im Grunde jQuery für C #. Es hängt von HTML Agility - Pack für die HTML - Parsing.

Beantwortet am 01/12/2010 um 06:41
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more