Files
apify--crawlee/docs/examples/forms.ts
T
2026-07-13 13:23:39 +08:00

40 lines
1.2 KiB
TypeScript

import { Dataset, launchPuppeteer } from 'crawlee';
// Launch the web browser.
const browser = await launchPuppeteer();
// Create and navigate new page
console.log('Open target page');
const page = await browser.newPage();
await page.goto('https://github.com/search/advanced');
// Fill form fields and select desired search options
console.log('Fill in search form');
await page.type('#adv_code_search input.js-advanced-search-input', 'apify-js');
await page.type('#search_from', 'apify');
await page.type('#search_date', '>2015');
await page.select('select#search_language', 'JavaScript');
// Submit the form and wait for full load of next page
console.log('Submit search form');
await Promise.all([
page.waitForNavigation({ waitUntil: 'networkidle2' }),
page.click('#adv_code_search button[type="submit"]'),
]);
// Obtain and print list of search results
const results = await page.$$eval('[data-testid="results-list"] div.search-title > a', (nodes) =>
nodes.map((node) => ({
url: node.href,
name: node.innerText,
})),
);
console.log('Results:', results);
// Store data in default dataset
await Dataset.pushData(results);
// Close browser
await browser.close();