You are on page 1of 4

Cào web với Axios và Cheerio

1, Axios:
- Thực hiện yêu cầu tới các trang web và máy chủ, tương tự như trình duyệt
- Thay vì trình bày kết quả một cách trực quan, Axios cho phép thao tác phản
hồi bằng mã  Hữu ích cho quét web
 Chuẩn bị:
- Nên có JavaScript
- CSS truy cập DOM
- Node.js, npm
*Mục đích Axios:
- Trong nhiều trường hợp, cách duy nhất để truy cập một số dữ liệu nhất định là
lấy dữ liệu đó từ web công cộng.
 Tốn kém và mất thời gian  Quét Web của Axios
a, Setup:
- Tạo project, thiết lập gói npm và cài Axios:

npm init -y
npm install axios
- Tạo tệp index.js ở thư mục gốc của thư mục đó:
const axios = require('axios');
axios.get('https://scrapeme.live/shop/')
.then(({ data }) => console.log(data));
- Điều chỉnh package.json, vd:
{
"name": "scraper",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.27.2"
}
}
Nhập npm start vào để chạy mã, nếu hoạt động  HTML trang web đc in ra:

 Bị xáo trộn với các nội dung khác của web


 Sử dụng Cheerio(cung cấp cách triển khai hiệu quả jQuery thiết kế riêng cho
server)
2, Cheerio:
- Trong bối cảnh quét web của Axios, Cheerio hữu ích trong việc chọn các
phần tử HTML cụ thể và trích xuất thông tin của chúng
 Sắp xếp hoặc chuyển đổi thông tin theo nhu cầu.
a, Setup với Axios:
- Chạy lệnh trong thư mục:
npm install cheerio
- Thêm thông tin cần tìm

Như ví dụ, các phần tử chứa tên sản phẩm sử dụng thuộc tính lớp :

woocommerce-loop-product__title

Sửa đổi index.js:


const axios = require('axios');
const cheerio = require('cheerio');
axios.get('https://scrapeme.live/shop/')
.then(({ data }) => {
const $ = cheerio.load(data);

const pokemonNames = $('.woocommerce-loop-


product__title')
.map((_, product) => {
const $product = $(product);
return $product.text()
})
.toArray();
console.log(pokemonNames)
});

You might also like