以下功能基於puppeteer實現
中文文檔
英文文檔
- 引入插件,並且打開啓動
const puppeteer = require('puppeteer');
(async () => {
browser = await puppeteer.launch({
headless: true,
// defaultViewport: { width: 1920, height: 1080 },
// args: ['--start-maximized'],
});
const page = await browser.newPage();
await page.goto('http://localhost:9527/index'); // 要爬取的網頁URL
const data = await page.evaluate(() => {
// 在瀏覽器環境中執行的代碼,可以訪問DOM並獲取數據
// 返回需要的數據
return document.body.innerHTML;
});
//關閉瀏覽器
// await browser.close();
})();
- 獲取元素(方案一:)
//直接點擊
await page.waitForSelector('#box');
await page.click('#box');
- 通過鼠標事件(方案二)
//通過鼠標移動點擊
let x = Math.floor(Math.random()*100+1)
await page.mouse.click(x, 100);
tips: 這種方法的前提是要知道,元素的位置,可通過以下方法獲取元素位置:
// 獲取元素屬性,位置,尺寸
let obj1 = await dom.boxModel()
let obj2 = await dom.boundingBox()
let offsetTop = await page.$eval('#box', el => el.offsetTop); //這裏面可以使用js原生的一些方法獲取元素尺寸,位置
4.完整代碼片段:
const puppeteer = require('puppeteer');
(async () => {
browser = await puppeteer.launch({
headless: true,
// defaultViewport: { width: 1920, height: 1080 }, //頁面默認尺寸
// args: ['--start-maximized'], //瀏覽器窗口最大化
});
const page = await browser.newPage();
await page.goto('http://localhost:9527/index'); // 要爬取的網頁URL
const data = await page.evaluate(() => {
// 在瀏覽器環境中執行的代碼,可以訪問DOM並獲取數據
// 返回需要的數據
return document.body.innerHTML;
});
//直接點擊
await page.waitForSelector('#box');
await page.click('#box');
let dom = await page.$('#box')
await dom.click()
// 獲取元素屬性,位置,尺寸
// let obj = await dom.boxModel()
// let obj = await dom.boundingBox()
//通過鼠標移動點擊
// let x = Math.floor(Math.random()*100+1)
// console.log(x)
// await page.mouse.click(x, 100);
//關閉瀏覽器
await browser.close();
})();