2013-04-21 6 views
6

Ich versuche, diese Website zu kriechen: http://www.aido.com/eshop/cl_2-c_189-p_185/stationery/pens.htmlPaginierung mit scrapy

Ich kann auf dieser Seite alle Produkte erhalten, aber wie Ausgabe ich den Antrag auf „Mehr“ Link am unteren Rand der Seite ?

Mein Code bis jetzt ist:

rules = (
    Rule(SgmlLinkExtractor(restrict_xpaths='//li[@class="normalLeft"]/div/a',unique=True)), 
    Rule(SgmlLinkExtractor(restrict_xpaths='//div[@id="topParentChilds"]/div/div[@class="clm2"]/a',unique=True)), 
    Rule(SgmlLinkExtractor(restrict_xpaths='//p[@class="proHead"]/a',unique=True)), 
    Rule(SgmlLinkExtractor(allow=('http://[^/]+/[^/]+/[^/]+/[^/]+$',), deny=('/about-us/about-us/contact-us', './music.html', ) ,unique=True),callback='parse_item'), 
) 

Jede Hilfe?

Antwort

10

Zunächst einmal sollten Sie einen Blick auf diesen Thread nehmen, wie mit Schaben Ajax dynamisch geladenen Inhalt befassen: Can scrapy be used to scrape dynamic content from websites that are using AJAX?

Also, klicken Sie auf „Mehr“, um Brände eine XHR Anfrage:

http://www.aido.com/eshop/faces/tiles/category.jsp?q=&categoryID=189&catalogueID=2&parentCategoryID=185&viewType=grid&bnm=&atmSize=&format=&gender=&ageRange=&actor=&director=&author=&region=&compProductType=&compOperatingSystem=&compScreenSize=&compCpuSpeed=&compRam=&compGraphicProcessor=&compDedicatedGraphicMemory=&mobProductType=&mobOperatingSystem=&mobCameraMegapixels=&mobScreenSize=&mobProcessor=&mobRam=&mobInternalStorage=&elecProductType=&elecFeature=&elecPlaybackFormat=&elecOutput=&elecPlatform=&elecMegaPixels=&elecOpticalZoom=&elecCapacity=&elecDisplaySize=&narrowage=&color=&prc=&k1=&k2=&k3=&k4=&k5=&k6=&k7=&k8=&k9=&k10=&k11=&k12=&startPrize=&endPrize=&newArrival=&entityType=&entityId=&brandId=&brandCmsFlag=&boutiqueID=&nmt=&disc=&rat=&cts=empty&isBoutiqueSoldOut=undefined&sort=12&isAjax=true&hstart=24&targetDIV=searchResultDisplay 

, die text/html der nächsten 24 Artikel zurückgibt. Beachten Sie diesen hstart=24 Parameter: Wenn Sie zum ersten Mal auf "Mehr anzeigen" klicken, ist es gleich 24, das zweite Mal - 48 usw. Dies sollte Ihr Lebensretter sein.

Jetzt sollten Sie diese Anfragen in Ihrem Spider simulieren. Die empfohlene Vorgehensweise ist die Instantiierung des Request Scrapys Objekts, das einen Rückruf bereitstellt, bei dem Sie die Daten extrahieren.

Hoffe, dass hilft.

+1

Dies war hilfreich, aber ein Beispiel, wie "Scrapys Request-Objekt instanziiert" wäre noch hilfreicher gewesen. – SMPLGRP