2017-01-30 3 views
1

Hier ist was ich versuche zu erreichen. Ich bin in der Lage, eine Webseite erfolgreich zu scrappen und dann die benötigten Informationen zu extrahieren, und ich habe dies bereits auf einigen Webseiten ausgeführt, wo die Paginierungslinks im href-Attribut leicht verfügbar sind. Meine Frage ist, wie auf die nächste Seite navigiere, wenn die Paginierung Variable ist dynamisch:dynamische links in nodejs/cheerio/x-ray

<ul> 
    <li> 
     <a class="clickPage" href="javascript:previousPage()">1</a> 
    </li> 
    <li> 
     <a class="clickPage active" href="javascript:currentPage()">2</a> 
    </li> 
    <li> 
     <a class="clickPage" href="javascript:nextPage()">Next Page</a> 
    </li> 

So weit Code hier ist, was ich habe Arbeit für andere Websites

var request = require('request'),  // simplified HTTP request client 
    cheerio = require('cheerio'),  // lean implementation of core jQuery 
    Xray = require('x-ray'),   // 
    x = Xray(), 
    fs = require('fs');     // file system i/o 

/* 
    TODO: Make this feature dynamic, to take in the URL of the page 
    var pageUrl; 
*/ 

var status = 'for sale'; 
var counter = 0; 

x('http://www.example.com/results/1', '.results', [{ 
    id: '[email protected]', // extracts the value from the attribute id 
    title: 'div.info h2', 
    category: 'span.category', 
    price: 'p.price', 
    count: counter+1, // why doesnt this update? this never shows in the json 
    status: status  // this value never shows up in the json 
}]) 
    .paginate(whatShouldThisBe) 
    .limit(800) 
    .write('products.json'); 

Auch der Wert der Zählung und Der Status wird nie in der generierten JSON-Datei angezeigt. Ich bin mir nicht sicher, was ich hier falsch mache, würde aber jede Hilfe zu schätzen wissen.

Danke!

Antwort

0

Haben Sie versucht mit .paginate('ul li:nth-child(3) [email protected]')?

Auf diese Weise erhalten Sie die dritte <li> in der <ul>.

+0

Danke, dass Sie mich wissen lassen. Ich habe dies versucht: '.paginate ('ul li: nth-child a @ href')' Jedoch habe ich bemerkt, dass Sie den Attributwert weggelassen ("@href"). Gibt es einen Grund dafür? Nur eine sanfte Erinnerung, die Links werden im Handumdrehen erstellt (onClick). – johnanish

Verwandte Themen