JavaScript网页爬虫及数据清洗,通常包含以下步骤:
- 数据获取: 利用axios或node-fetch等HTTP库获取网页HTML内容。
- HTML解析: 使用cheerio库解析HTML,方便操作DOM元素,或直接使用浏览器内置的DOMParser。
- 数据提取: 通过CSS选择器或XPath表达式精准定位并提取目标数据。
- 数据清洗: 去除多余空格、换行符,转换数据类型(例如字符串转数字),处理缺失值或异常值等。
- 数据存储: 将清洗后的数据存储到数据库(例如MongoDB、SQLite)或导出为JSON、CSV等格式。
以下示例演示使用axios和cheerio爬取网页数据并进行清洗:
const axios = require('axios'); const cheerio = require('cheerio'); axios.get('https://example.com') .then(response => { const html = response.data; const $ = cheerio.load(html); const extractedData = []; $('.item').each((i, el) => { // 假设目标数据在.item类选择器下 const title = $(el).find('h2.title').text().trim(); let price = $(el).find('span.price').text().trim(); price = parseFloat(price.replace(/[$,]/g, '')); // 清洗价格,去除'$'和',' if (title && !isNaN(price)) { // 数据校验 extractedData.push({ title, price }); } }); // 进一步清洗,例如过滤价格低于100的产品 const cleanedData = extractedData.filter(item => item.price >= 100); console.log(cleanedData); }) .catch(error => { console.error('数据获取失败:', error); });
此示例中,我们先获取网页数据,再用cheerio解析,提取标题和价格。 价格数据经过清洗,去除货币符号和逗号,并转换为数字。最后,过滤价格低于100的数据,输出清洗后的结果。 实际应用中,清洗步骤需根据具体网站结构和数据特点调整。 请注意,爬取数据时需遵守网站robots.txt规则,避免对网站造成负担。