2010-12-01 6 views
30

Dies könnte eine der Fragen sein, die schwer zu beantworten, aber hier geht:Der beste Weg für ein Anfänger-Bildschirm von Python Schaben lernen

halte ich nicht für meinen Selbst Programmierer - aber ich mag: -) Ich habe R gelernt, weil ich Spss satt hatte, und weil ein Freund mich in die Sprache eingeführt hat - ich bin also kein Fremder in der Programmierlogik.

Jetzt möchte ich Python lernen - in erster Linie um Scraping und Textanalyse zu screenen, aber auch um Webapps mit Pylons oder Django zu schreiben.

Also: Wie sollte ich lernen, Bildschirm Scrape mit Python zu lernen? Ich fing an, durch die scrappy docs zu gehen, aber ich fühle zu viel "Magie" geht - schließlich - versuche ich zu lernen, nicht nur zu tun.

Auf der anderen Seite: Es gibt keinen Grund, das Rad neu zu erfinden, und wenn Scrapy Screen Scraping ist, was Django zu Webseiten ist, dann könnte es sich schließlich lohnen, direkt in Scrapy zu springen. Was denken Sie?

Oh - BTW: Die Art von Screen Scraping: Ich will Zeitungsseiten (dh ziemlich komplex und groß) für Erwähnungen von Politikern etc. kratzen - Das bedeutet, dass ich täglich, inkrementell und rekursiv kratzen muss - und ich brauche um die Ergebnisse in einer Datenbank zu speichern - was mich zu einer Bonusfrage führt: Alle reden über nonSQL DB. Sollte ich lernen, z.B. mongoDB sofort (ich glaube nicht, dass ich starke Konsistenz brauche), oder ist das dumm für das, was ich tun will?

Vielen Dank für irgendwelche Gedanken - und ich entschuldige mich, wenn dies zu allgemein ist eine Programmierfrage zu sein.

+1

Eine Sache, die Ihnen hilft, gute Scraper zu erstellen, ist das Wissen über HTTP/Web (Cookies, Redirections, ...);) –

+0

Keine direkte Antwort auf Ihre Frage, aber Sie sollten dies überprüfen Video: https://www.youtube.com/watch?v=52wxGESwQSA es deckt viele der fortgeschrittenen Themen über screenscraping ab. Es kommt aus der Perspektive von Python, aber in den meisten Fällen macht es es in Bezug auf die Theorie und ist weitgehend sprachunabhängig. –

Antwort

47

Ich stimme zu, dass die Scrapy-Dokumente diesen Eindruck geben.Aber ich glaube, wie ich für mich selbst festgestellt habe, dass, wenn Sie Geduld mit Scrapy haben und zuerst die Tutorials durchgehen und sich dann in den Rest der Dokumentation vertiefen, Sie nicht nur beginnen werden, die verschiedenen Teile von Scrapy besser zu verstehen , aber Sie werden verstehen, warum es so tut, wie es es tut. Es ist ein Framework zum Schreiben von Spinnen und Screen Scrappern im eigentlichen Sinne eines Frameworks. Du wirst XPath noch lernen müssen, aber ich finde, dass es am besten ist, es unabhängig zu lernen. Schließlich beabsichtigen Sie, Websites zu scrappen, und ein Verständnis dafür, was XPath ist und wie es funktioniert, wird Ihnen die Dinge nur erleichtern.

Sobald Sie zum Beispiel das Konzept pipelines in Scrapy verstanden haben, werden Sie erkennen, wie einfach es ist, alle möglichen Dinge mit verschrotteten Gegenständen zu erledigen, einschließlich deren Speicherung in einer Datenbank.

BeautifulSoup ist eine wunderbare Python-Bibliothek, die verwendet werden kann, um Webseiten zu scrappen. Aber im Gegensatz zu Scrapy ist es kein Rahmen. Für kleinere Projekte, bei denen Sie keine Zeit investieren müssen, um eine richtige Spinne zu schreiben und sich mit der Verschrottung einer großen Datenmenge beschäftigen müssen, können Sie mit BeautifulSoup auskommen. Aber für alles andere werden Sie erst anfangen, die Art von Dingen zu schätzen, die Scrapy bietet.

+0

Das ist eine gute Antwort ayaz. Vielen Dank. Ich werde die scrapy docs wieder morgen besuchen (In Dänemark ist es schon nach Mitternacht) – Andreas

11

Sieht so aus, als ob Scrappy XPATH für DOM-Traversal verwendet, was eine Sprache selbst ist und sich möglicherweise für einige Zeit etwas kryptisch anfühlt. Ich denke BeautifulSoup wird Ihnen einen schnelleren Start geben. Mit lxml musst du mehr Zeit investieren, aber es ist generell (nicht nur für mich) eine bessere Alternative zu BeautifulSoup.

Für die Datenbank würde ich vorschlagen, dass Sie mit SQLite beginnen und es verwenden, bis Sie eine Wand treffen und etwas mehr skalierbar (was möglicherweise nie passieren wird, abhängig davon, wie weit Sie damit gehen wollen), an welchem ​​Punkt Sie ' Ich weiß, welche Art von Speicher Sie benötigen. Mongodb ist definitiv zu diesem Zeitpunkt übertrieben, aber mit SQL vertraut zu werden ist eine sehr nützliche Fähigkeit.

Hier ist ein Fünf-Zeilen-Beispiel, das ich vor einiger Zeit gegeben habe, um zu zeigen, wie Hacke BeautifulSoup verwendet werden kann. Which is the best programming language to write a web bot?

+0

das ist ein sehr cooles 5-zeiliges Beispiel. Nach ayaz 'Antwort denke ich, dass eine Framework-Lösung für mich der Weg sein könnte - aber für einfache Jobs auf einfachen Webseiten ist dein Beispiel einfach süß. Vielen Dank. Danke auch für den DB-Rat. – Andreas

+0

cababunga: Ich habe mich entschieden, ayaz antwort zu akzeptieren, aber es war wirklich du und ayaz zusammen, die mich zum scrapy machen ließen - ihr habt alle unterschiedliche Gründe angegeben. Und ich bin sehr glücklich mit Ihrem schönen Beispiel. – Andreas

+0

lxml als eine bessere Alternative zu BeautifulSoup? Ich habe lxml ein bisschen und BeautifulSoup viel benutzt und ich finde BeautifulSoup viel freundlicher zu verwenden. Zugegeben, es hat nicht die Kompaktheit von XPaths, aber es ist wunderbar, damit zu arbeiten. Und weil Sie * wirklich * in Python arbeiten, werden einige Dinge, die mit XPaths nicht möglich sind, in BeautifulSoup viel einfacher als mit lxml. –

2

Verwenden Sie für den Datenbank-Teil der Frage das richtige Tool für den Job. Finden Sie heraus, was Sie tun möchten, wie Sie Ihre Daten organisieren möchten, welche Art von Zugriff Sie benötigen, usw. Dann entscheiden Sie, ob eine No-SQL-Lösung für Ihr Projekt funktioniert.

Ich denke, no-sql-Lösungen sind hier für eine Vielzahl von verschiedenen Anwendungen zu bleiben. Wir haben sie in verschiedenen Projekten implementiert, an denen ich in den letzten 20 Jahren in SQL-Datenbanken gearbeitet habe, ohne sie mit no-sql zu überspielen, so dass die Anwendungen existieren. Es lohnt sich also, zumindest einige Hintergrundinformationen über das Angebot und die Produkte zu erhalten, die auf dem neuesten Stand sind.

Entwerfen Sie Ihr Projekt gut und halten Sie die Persistenzschicht getrennt, und Sie sollten in der Lage sein, Ihre Datenbanklösung mit nur geringem Kummer zu ändern, wenn Sie sich dafür entscheiden.

2

Ich empfehle Start niedriger Ebene während des Lernens - Scrapy ist ein High-Level-Framework. Lesen Sie ein gutes Python-Buch wie Dive Into Python, dann betrachten Sie lxml zum Parsen von HTML.

+0

lxml link broken .. hast du eine aktualisierte Version? – ProgSnob

+1

sicher, aktualisiert jetzt – hoju

3

Ich mag BeautifulSoup. Ich bin ziemlich neu in Python, fand es aber ziemlich einfach, das Screen Scraping zu starten. Ich schrieb ein kurzes Tutorial über screen scraping with beautiful soup. Ich hoffe, es hilft.

+3

Ihr Tutorial ist so kurz, dass Sie es hier als Antwort aufnehmen sollten. –

0

vor dem Tauchen in Scrapy Udacity der Einführung in die Informatik nehmen: https://www.udacity.com/course/cs101

, dass eine gute Möglichkeit ist, sich mit Python vertraut zu machen, und Sie werden tatsächlich Scrapy viel schneller lernen, wenn Sie einige grundlegende Kenntnisse von Python haben.

Verwandte Themen