2016-07-22 23 views
0

Ich stieß auf Scrapy mit der Anforderung des Crawlens und Kratzen beide. Aber je nach Anwendungserfordernis habe ich mich entschieden, nicht mit dem monolithischen Ansatz zu gehen. Alles sollte service-basiert sein. Also habe ich beschlossen, zwei Dienste zu entwerfen.Scrapy: Schrott Artikel aus HTML und nicht aus URL

  1. Erhalten Sie alle URLs und HTML. Hochladen auf s3.
  2. Schrott Elemente aus HTML

Warum? Einfach, heute habe ich beschlossen, 10 Artikel daraus zu verschrotten, morgen möchte ich 20 (Bewerbungsvoraussetzung) verschrotten. In diesem Fall möchte ich nicht URL und HTML erneut crawlen, da html gleich ist (es werden nur Blogseiten gecrawlt, in denen nur Kommentare hinzugefügt werden und Inhalt bleibt per URL gleich).

Der erste Service würde auf Scrapy basieren. Ich habe gesucht, ob wir dasselbe für Scraping verwenden könnten, wenn wir HTML anstelle von Start-URL zur Verfügung stellen können oder wir müssen mit BeatifulSoap oder einer anderen Scraping-Bibliothek gehen.

+0

Wenn sich Ihre HTML-Quellen gespeichert auf s3 Sie noch scrapy verwenden können, um sie herunterzuladen und zu kriechen sie asynchron :) – Granitosaurus

Antwort

1

Scrapy-Selektoren (ermöglichen das Extrahieren von Daten aus HTML/XML) sind nun als unabhängiges Projekt mit der Bezeichnung parsel verpackt.

Wenn Sie Unicode-HTML-Zeichenfolgen von S3 an eine übergeben können, können Sie dieselbe Datenextraktion durchführen wie in einem "normalen" Live-Scrapy-Projekt.

Beispiel von the docs:

>>> from parsel import Selector 
>>> sel = Selector(text=u"""<html> 
     <body> 
      <h1>Hello, Parsel!</h1> 
      <ul> 
       <li><a href="http://example.com">Link 1</a></li> 
       <li><a href="http://scrapy.org">Link 2</a></li> 
      </ul 
     </body> 
     </html>""") 
>>> 
>>> sel.css('h1::text').extract_first() 
u'Hello, Parsel!' 
>>> 
>>> sel.css('h1::text').re('\w+') 
[u'Hello', u'Parsel'] 
>>> 
>>> for e in sel.css('ul > li'): 
     print(e.xpath('.//a/@href').extract_first()) 
http://example.com 
http://scrapy.org 
+0

es sucht. Aber es wäre immer noch eine andere Bibliothek wie BeatifulSoap etc. – SangamAngre