web-dev-qa-db-de.com

Wie kann man eine Website crawlen/Daten mit Python in eine Datenbank extrahieren?

Ich möchte eine Webapp erstellen, um anderen Studenten an meiner Universität zu helfen, ihre Zeitpläne zu erstellen. Dazu muss ich die Masterpläne (eine riesige HTML-Seite) sowie einen Link zu einer detaillierten Beschreibung für jeden Kurs in eine Datenbank crawlen, vorzugsweise in Python. Außerdem muss ich mich anmelden, um auf die Daten zugreifen zu können.

  • Wie würde das funktionieren?
  • Welche Tools/Bibliotheken kann/sollte ich verwenden?
  • Gibt es dazu gute Tutorials?
  • Wie gehe ich am besten mit binären Daten um (z. B. hübsches pdf)?
  • Gibt es dafür schon gute Lösungen?
11
McEnroe

Wenn Sie ein leistungsfähiges Scraping-Framework verwenden möchten, gibt es Scrapy . Es hat auch eine gute Dokumentation. Es kann jedoch ein wenig übertrieben sein, abhängig von Ihrer Aufgabe.

11
Acorn

Scrapy ist wahrscheinlich die beste Python-Bibliothek zum Crawlen. Es kann den Status für authentifizierte Sitzungen beibehalten. 

Der Umgang mit binären Daten sollte separat behandelt werden. Für jeden Dateityp müssen Sie entsprechend seiner eigenen Logik anders damit umgehen. Für fast jedes Format können Sie wahrscheinlich eine Bibliothek finden. Schauen Sie sich zum Beispiel unter PyPDF den Umgang mit PDFs an. Für Excel-Dateien können Sie xlrd ausprobieren.

3
sharjeel

Ich mochte die Verwendung von BeatifulSoup zum Extrahieren von HTML-Daten

So einfach ist das:

from BeautifulSoup import BeautifulSoup 
import urllib

ur = urllib.urlopen("http://pragprog.com/podcasts/feed.rss")
soup = BeautifulSoup(ur.read())
items = soup.findAll('item')

urls = [item.Enclosure['url'] for item in items]
1
Alexey Grigorev

Zu diesem Zweck gibt es ein sehr nützliches Tool namens web-harvestLink auf ihre Website http://web-harvest.sourceforge.net/ Ich verwende dieses zum Crawlen von Webseiten

0
Riz