Session at SoCraTes Linz, 29. October 2016 https://twitter.com/SoCraTesAT
- Just because I'm able to... doesn't mean I'm allowed to.
- We should care about the law.
- DANGER: Copyright
- Keep in Mind - German Version: https://de.wikipedia.org/wiki/Datenbankwerk
- Keep in Mind - English Version: https://en.wikipedia.org/wiki/Sui_generis_database_right
- Silenium - A browser automation framework and ecosystem: https://github.com/SeleniumHQ/selenium
- Simer.js - A scriptable browser for Web developers: https://slimerjs.org/
- Webarchive - The webarchive file format: https://en.wikipedia.org/wiki/Webarchive
- Apache Nutch - Web Crawler: http://nutch.apache.org/
- Elastic Search: https://github.com/elastic/elasticsearch
- Boilerpipe - Nose reduction, Removal and Fulltext Extraction from HTML pages: https://github.com/kohlschutter/boilerpipe
- Nightmare.js - A high-level browser automation library: http://www.nightmarejs.org/
- Splash - A lightweight, scriptable headless browser with an HTTP API: https://scrapinghub.com/splash/
- Pdftotext: https://en.wikipedia.org/wiki/Pdftotext
- Docker Container: https://www.docker.com/
- Scraping Single Page Applications (JavaScript) works fine as most websites support crawlers anyway
- Use timeouts when scraping JavaScript heavy websites
- Wait until a certain element has been rendered or XHR has been performed
- List of some Tools: Selenium/PhantomJS/NightmareJS/SlimerJS/Apache Nutch/Splash (SaS, oder Docker-Container)
- Avoid IP identification
- Enable Gzip Compression
- Use AdBlocker to avoid tracking requests
- VPN Providers like Squid
Web Scraping, GERMAN Notes by https://twitter.com/_nd_
- Rechtliche Rahmenbedingungen: “nur dass ich es kann, heisst nicht, dass ich es darf”. Datenbankrecht
- Verhindern von Triggern der IP-Erkennung
- VPN mit Squid, wird von Source angesprochen - kleine VPNs haben schon > 50 IPs
- Web Archive von http://Archive.org praktisch für Crawling-Ergebisse
- Crawling von Single Page Seiten: Google # URLs sind meist ganz okay. Selenium/PhantomJS/NightmareJS/SlimerJS/Apache Nutch/Splash (SaS, oder Docker-Container)
- Noise Reduction mit Boilerpipe
- JS entweder mit Timeout oder (wenn Struktur bekannt ist, testen bis erwartetes Element da ist)
- HTTP-Kompression gegen unnötigen Netzwerktraffic/CPU-Last!
- HTTPS-Zertifikate: ggf. muss Zertifikats-Checking ausgeschaltet werden.
- Automatische User-Registrierung?
- Alternativpläne: Mechanical Turk, Kontakt mit existierenden Meta-Datenhaltern (z.B. Preise nicht scrapen, sondern von Geizhals), handgeschriebene Parser + Unit Test für Fehlschlag/Wartung, Manuell als Bootstrapping und später per Befüllung per API.
- Probleme: Google Analytics soll nicht getriggert werden (AdBlocker); CPU oder Memoryfootprint ist zu hoch und VM/Container muss neu gestartet werden.