के साथ गतिशील पेजिंग मैं नाइटमेयर/इलेक्ट्रॉन के साथ गतिशील पेजिंग वेबसाइटों को स्क्रैप करने का प्रयास कर रहा हूं। मुझे ऐसा करने का कोई तरीका नहीं दिख रहा है ... जब तक दुःस्वप्न कार्यों के साथ या तर्क के साथ कॉल का मूल्यांकन करने का एक तरीका नहीं है।नाइटमेयर/इलेक्ट्रॉन (पृष्ठ स्क्रैप)
यहां एक साधारण कोड उदाहरण है जो केवल एक वाक्यांश को गूगल्स करता है और परिणाम 1 से परिणाम hrefs देता है। मैं यह कोड परिणामों में प्रत्येक पृष्ठ के लिए जारी रखना चाहता हूं।
var Nightmare = require('nightmare');
var vo = require('vo');
vo(function*() {
var nightmare = Nightmare({ show: true });
var links = yield nightmare
.goto('http://www.google.com')
.wait('input[title="Search"]')
.click('input[title="Search"]')
.type('input[title="Search"]', 'Anequim Project')
.click('input[name="btnK"]')
.wait(600)
.evaluate(function(){
var linkArray = [];
var links = document.querySelectorAll('h3.r a');
for (var i = 0; i < links.length; ++i) {
linkArray.push(links[i].getAttribute('href'));
}
return linkArray;
});
yield nightmare.end();
return links;
})(function (err, result) {
if (err) return console.log(err);
console.log(result);
});
लिंक के साथ क्या है [0], केवल पहला लिंक क्यों? – TheAnimatrix
@ brenity के लिए TheAnimatrix उदाहरण Google द्वारा लौटाए गए प्रत्येक पृष्ठ का पहला लिंक देता है। –
ठीक है मैंने सोचा कि यह एक गलती थी, लेकिन इस समाधान के साथ कोई समस्या मौजूद है, अंतिम पृष्ठ इस समस्या पर ठोकर नहीं आता है, तो उन्हें सिर्फ लिंक.push() फ़ंक्शन को कॉपी करना चाहिए जबकि लूप, तो यह अंतिम पृष्ठ की क्षतिपूर्ति के लिए एक बार और अधिक चला सकता है – TheAnimatrix