Nightmare is a high-level browser automation library for Node.js. It is built on top of Electron, which is a framework for building cross-platform desktop applications with web technologies. Nightmare is often used for web scraping and automated testing.
To select elements on a webpage using CSS selectors in Nightmare, you can use the .evaluate()
method, which allows you to execute custom JavaScript code in the context of the webpage loaded in Nightmare's browser instance.
Here's a basic example of how you can use Nightmare along with CSS selectors to select and extract information from a webpage:
const Nightmare = require('nightmare');
const nightmare = Nightmare({ show: true });
nightmare
.goto('http://example.com') // Replace with the URL of the page you want to scrape
.evaluate(() => {
// Inside this function, you can use the standard DOM APIs to select elements
const elements = document.querySelectorAll('.some-class'); // Example CSS selector
const data = [];
// Iterate over the NodeList and extract the data you need
elements.forEach((element) => {
data.push({
text: element.textContent,
href: element.getAttribute('href'),
// ... add more properties as needed
});
});
// Return the data to the Node.js context
return data;
})
.end()
.then((data) => {
// Output the result
console.log(data);
})
.catch((error) => {
console.error('Search failed:', error);
});
In this example, .goto()
navigates to the specified URL, and .evaluate()
is used to run a function in the context of the page. Inside the .evaluate()
function, document.querySelectorAll()
is used to select all elements that match the given CSS selector (.some-class
in the example). The function then extracts the desired information from each element and constructs an array of objects (data
) with the extracted information.
After the evaluation is complete, .end()
is called to end the Nightmare instance, and the result is printed to the console in the .then()
block. If there's an error, it is caught and printed in the .catch()
block.
Please note that in order to run the above example, you'll need to install Nightmare and any other required dependencies via npm:
npm install nightmare
Ensure that you run this command in your project directory where your Node.js application is located.