Ich versuche, Produktinformationen mithilfe von Scrapy von einer Webseite zu entfernen. Meine zu kratzende Webseite sieht folgendermaßen aus:
- Beginnt mit einer product_list-Seite mit 10 Produkten
- Ein Klick auf "Weiter" lädt die nächsten 10 Produkte (URL ändert sich nicht zwischen den beiden Seiten)
- Ich benutze LinkExtractor, um jedem Produktlink auf der Produktseite zu folgen und alle Informationen zu erhalten, die ich brauche
Ich habe versucht, den Next-Button-Ajax-Aufruf zu replizieren, kann aber nicht funktionieren, also versuche ich es mit Selen. Ich kann den Web-Treiber von Selen in einem separaten Skript ausführen, weiß aber nicht, wie ich ihn in Scrapy integrieren soll. Wo soll ich den Selenteil in meine kratzende Spinne stecken?
Meine Spinne ist ziemlich normal, wie die folgende:
class ProductSpider(CrawlSpider):
name = "product_spider"
allowed_domains = ['example.com']
start_urls = ['http://example.com/shanghai']
rules = [
Rule(SgmlLinkExtractor(restrict_xpaths='//div[@id="productList"]//dl[@class="t2"]//dt'), callback='parse_product'),
]
def parse_product(self, response):
self.log("parsing product %s" %response.url, level=INFO)
hxs = HtmlXPathSelector(response)
# actual data follows
Jede Idee wird geschätzt. Vielen Dank!