Mit der Python Bibliothek Scrapy kann man relativ schnell einen eigenen Crawler aufsetzen – also ein Programm, das alle Seiten einer Website durchläuft. Dabei können dann bestimmte Aktionen durchgeführt werden.
Im Folgenden Beschreibe ich kurz, wie man unter Windows Scrapy als Crawler einsetzen kann.
pip intall pypiwin32
installierenpip install scrapy
Scrapy installieren. scrapy startproject PROJEKTNAME
. Projektname sollte man mit dem eigenen Projektnamen ersetzencd PROJEKTNAME
) scrapy genspider PROJEKTNAME
eingeben. Aber dann bekommt man einen Standardspider, den wir nicht wollen.Wir schreiben also folgendes Python Programm:
# -*- coding: utf-8 -*- import scrapy from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor class UlrischaSpider(CrawlSpider): //Wichtig: Dies ist der Name über den der Crawler in der Eingabeaufforderung gestartet wird name = 'ulrischa' allowed_domains = ['ulrischa.de'] start_urls = ['https://www.ulrischa.de'] //Damit wird jedem Link der erlaubten Domain gefolgt und die Funktion parse_item ausgeführt rules = ( Rule(LinkExtractor(), callback='parse_item', follow=True), ) //Einfaches Beispiel, das den Inhalt des title-Element ausgiebt def parse_item(self, response): t = response.css('title::text').extract_first() print t+'\n'
Wichtig ist, dass man nicht die Standardmethode parse() überschreibt, sondern eine eigene definiert.
Nun ruft man das Programm in der Eingabeaufforderung folgendermaßen auf: scrapy crawl ulrischa
. Dabei muss der Parameter nach crawl dem Wert des name Attributs aus der Klasse entsprechen.
Bitte verwendet für Tests eine Andere Domain als meine 🙂
Hallo,
vielen Dank für deine sehr interessante Webseite.
Ich möchte mit Python 3 Beautiful Soup bzw./und Scrapy die IP Adresse des Webservers einer Webadresse ermitteln. Wie mache ich das?
Danke
Tanja
Hallo Tanja, das hat nicht mit Scrapy oder Beautiful soup zu tun. Geht einfach über socket.
import socket
socket.gethostbyname(‘example.com’)