Hướng dẫn sau đây về quét web bằng JavaScript và Node. js sẽ cho phép bạn cạo hầu như bất kỳ trang nào. Nút. js là một môi trường thời gian chạy phát triển nhanh, dễ sử dụng được tạo cho JavaScript, khiến nó trở nên hoàn hảo để quét JavaScript trên web một cách hiệu quả và ít rào cản gia nhập
Web cạo JavaScript có một số lợi thế. Bởi vì nó là một trong những ngôn ngữ lập trình được hỗ trợ và sử dụng rộng rãi nhất, nên việc cạo JavaScript cho phép các nhà phát triển cạo nhiều loại trang web
Ngoài ra, cấu trúc cơ sở dữ liệu gốc của JavaScript là JSON, đây là cấu trúc cơ sở dữ liệu được sử dụng phổ biến nhất trên tất cả các API
Hôm nay, chúng ta sẽ tìm hiểu cách xây dựng một trình quét web JavaScript và làm cho nó tìm thấy một chuỗi dữ liệu cụ thể trên cả trang tĩnh và trang động
Nếu bạn đọc đến cuối hướng dẫn của chúng tôi, ngoài việc chỉ cho bạn cách xây dựng trình quét web từ đầu, chúng tôi sẽ hướng dẫn bạn một mẹo đơn giản để vượt qua hầu hết các rào cản chính mà bạn sẽ gặp phải khi quét các trang web trên quy mô lớn
điều kiện tiên quyết. Những điều bạn cần biết về JavaScript quét web
Hướng dẫn này dành cho các nhà phát triển cơ sở, vì vậy chúng tôi sẽ đề cập đến tất cả những điều cơ bản bạn cần hiểu để xây dựng trình quét web JavaScript đầu tiên của mình
Tuy nhiên, để tận dụng tối đa hướng dẫn của chúng tôi, chúng tôi khuyên bạn nên
- Có kinh nghiệm với JavaScript [hoặc ít nhất là quen thuộc với nó]
- Có kiến thức cơ bản về cấu trúc trang web, và
- Biết cách sử dụng DevTools để trích xuất các bộ chọn phần tử [không bắt buộc]
Ghi chú. Mặc dù JavaScript Scraping tương đối đơn giản, nhưng nếu bạn chưa từng sử dụng JavaScript trước đây, hãy xem hướng dẫn JavaScript của w3bschool hoặc để có khóa học chuyên sâu hơn, hãy xem khóa học Javascript của freeCodeCamp
Tất nhiên, quét web đi kèm với những thách thức riêng của nó, nhưng đừng lo lắng. Ở cuối bài viết này, chúng tôi sẽ chỉ cho bạn một giải pháp nhanh chóng giúp máy cạp của bạn chạy trơn tru và không gặp rắc rối
Biết cách tạo một trình quét web từ đầu là một bước thiết yếu trong hành trình học tập của bạn để trở thành một trình quét chính, vì vậy hãy bắt đầu
Cách xây dựng Trình quét web JavaScript cho các trang tĩnh
Quét web có thể được chia thành hai bước cơ bản
- Tìm nạp mã nguồn HTML và
- Phân tích cú pháp dữ liệu để thu thập thông tin chúng tôi cần
Chúng ta sẽ khám phá cách thực hiện từng điều này bằng cách thu thập giá của một bộ tấm hữu cơ từ trang web của Turmerry
1. Cài đặt nút. js trên máy tính của bạn
Để bắt đầu, hãy truy cập https. //nodejs. org/en/download/ để tải xuống Nút. js và làm theo lời nhắc cho đến khi hoàn tất. một nút. js cho phép chúng tôi tận dụng các thư viện quét web JavaScript như Cheerio- sẽ sớm nói thêm về điều đó
Bản tải xuống bao gồm npm, là trình quản lý gói cho Node. js. Npm sẽ cho phép chúng tôi cài đặt phần phụ thuộc còn lại mà chúng tôi cần cho trình quét web của mình
Sau khi cài đặt xong, hãy truy cập thiết bị đầu cuối của bạn và nhập
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];1 và
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];2 để xác minh mọi thứ đang hoạt động bình thường
2. Chuẩn bị sẵn sàng không gian làm việc của bạn
Sau nút. js đã được cài đặt, hãy tạo một thư mục mới có tên là “firstscraper” và nhập
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];3 để khởi tạo gói. tập tin json
Sau đó, chúng tôi sẽ cài đặt các phụ thuộc của chúng tôi bằng cách chạy
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];4 và đợi vài phút để nó cài đặt
* Cài đặt nghệ sĩ múa rối sẽ lâu hơn một chút vì nó cũng cần tải xuống crom
Axios là ứng dụng khách HTTP dựa trên lời hứa dành cho Node. js cho phép chúng tôi gửi yêu cầu đến máy chủ và nhận phản hồi. Nói một cách đơn giản, chúng tôi sẽ sử dụng Axios để lấy mã HTML của trang web
Mặt khác, Cheerio là một triển khai jquery cho Node. js giúp chọn, chỉnh sửa và xem dễ dàng hơn
Chúng ta sẽ nói nhiều hơn về thư viện cuối cùng, nghệ sĩ múa rối, khi cạo các trang động ở phần sau của bài viết này
3. Tìm nạp mã HTML bằng Axios
Khi mọi thứ đã sẵn sàng, hãy nhấp vào “tệp mới”, đặt tên là
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];5 và nhập hàm sau để tìm nạp HTML của trang sản phẩm mà chúng tôi muốn thu thập dữ liệu từ đó
const axios = require['axios']; const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; console.log[html]; }] .catch[console.error];
Chúng tôi sử dụng
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];6 để khai báo Axios trong dự án của mình và thêm
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];7 và cung cấp cho nó URL của trang mà chúng tôi muốn tìm nạp
Axios sẽ gửi yêu cầu đến máy chủ và mang lại phản hồi mà chúng tôi sẽ lưu trữ trong
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];8 để sau đó chúng tôi có thể gọi và in nó trên bảng điều khiển
Sau khi chạy chương trình cạp bằng cách sử dụng
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];9 trong thiết bị đầu cuối, nó sẽ lấy ra một chuỗi HTML dài và không thể đọc được
Bây giờ, hãy giới thiệu cheerio để phân tích cú pháp HTML và chỉ lấy thông tin mà chúng tôi quan tâm
4. Chọn các yếu tố bạn muốn thu thập
Trước khi chúng tôi thực sự thêm cổ vũ vào dự án của mình, chúng tôi cần xác định các yếu tố chúng tôi muốn trích xuất từ HTML
Để làm điều này, chúng tôi sẽ sử dụng devtools của trình duyệt của bạn
Đầu tiên, chúng ta sẽ mở trang sản phẩm của Turmerry và nhấn Ctrl + shift + c để mở công cụ kiểm tra
Có hai mức giá khác nhau trên trang. Trong một số trường hợp, bạn có thể muốn lấy cả hai mức giá, nhưng trong ví dụ này, chúng tôi muốn thu thập giá mà họ thực sự bán nó
Khi bấm vào $99. 00 giá, công cụ sẽ đưa bạn đến dòng mã tương ứng nơi bạn có thể lấy lớp phần tử
Giá bán lẻ áp dụng loại
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; let scraped_headlines = [];[async [] => { const browser = await puppeteer.launch[]; const page = await browser.newPage[]; }0. Bây giờ chúng tôi có thông tin này, chúng tôi có thể tiếp tục và thêm cổ vũ vào tệp của mình
5. Phân tích cú pháp HTML bằng cách sử dụng cheerio
Điều đầu tiên, hãy thêm
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; let scraped_headlines = [];[async [] => { const browser = await puppeteer.launch[]; const page = await browser.newPage[]; }1 vào đầu tệp của bạn để nhập thư viện của chúng tôi vào dự án, sau đó chuyển tài liệu HTML tới Cheerio bằng cách sử dụng
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; let scraped_headlines = [];[async [] => { const browser = await puppeteer.launch[]; const page = await browser.newPage[]; }2
Sau khi tải HTML, chúng tôi sẽ sử dụng lớp CSS của giá bằng cách sử dụng
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; let scraped_headlines = [];[async [] => { const browser = await puppeteer.launch[]; const page = await browser.newPage[]; }3để lưu trữ văn bản có chứa lớp đó trong
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; let scraped_headlines = [];[async [] => { const browser = await puppeteer.launch[]; const page = await browser.newPage[]; }4
Khi bạn cập nhật mã của mình, nó sẽ giống như thế này
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];
Sau khi chạy chương trình của bạn, nó sẽ in nội dung được gắn thẻ là. giá bán cho bảng điều khiển
Nếu chúng tôi cung cấp nhiều URL hơn, chúng tôi sẽ có thể thu thập tất cả giá bán cho tất cả các sản phẩm trong một khoảng thời gian ngắn so với việc chúng tôi thực hiện thủ công
Ghi chú. Quét web bằng cách sử dụng cổ vũ có nhiều cách sử dụng bổ sung - nếu bạn muốn tìm hiểu sâu hơn về thư viện này, hãy xem tài liệu của cổ vũ
Cạo các trang động?
Khi bạn điều hướng đến một trang động, trình duyệt của bạn sẽ cần hiển thị JavaScript để truy cập nội dung trước khi hiển thị cho bạn. Đây có thể không phải là vấn đề đối với chúng tôi, nhưng nó là vấn đề đối với máy cạp của chúng tôi
Axios và bất kỳ ứng dụng khách HTTP nào cho vấn đề đó sẽ không đợi JavaScript thực thi trước khi trả về phản hồi. Vì vậy, nếu chúng tôi sử dụng cái cạp của mình như hiện tại, chúng tôi sẽ không thực sự nhận được gì
Đây là nơi Puppeteer sẽ có ích
Nói một cách đơn giản, Puppeteer là một nút. js cho phép bạn điều khiển trình duyệt crom không đầu trực tiếp từ thiết bị đầu cuối của mình. Bạn có thể làm hầu hết mọi thứ mà bạn có thể tưởng tượng, như cuộn xuống, nhấp, chụp ảnh màn hình, v.v.
Nếu nội dung bạn muốn cạo không tải cho đến khi bạn thực thi tập lệnh bằng cách nhấp vào nút, bạn có thể viết tập lệnh cho những hành động này bằng Puppeteer và cung cấp dữ liệu cho trình cạo của bạn.
Đối với ví dụ này, giả sử bạn muốn tạo nội dung mới xung quanh việc thu thập JavaScript và nghĩ rằng sẽ thu thập ý tưởng từ r/webscraping subreddit bằng cách thu thập tiêu đề của các bài đăng
Nếu chúng tôi kiểm tra subreddit này, chúng tôi sẽ nhận thấy một số điều ngay lập tức. đầu tiên, các lớp được tạo ngẫu nhiên, vì vậy chúng tôi không có lý do gì để cố gắng bám vào chúng. Thứ hai, các tiêu đề được gắn thẻ là
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; let scraped_headlines = [];[async [] => { const browser = await puppeteer.launch[]; const page = await browser.newPage[]; }5, nhưng chúng được bao bọc giữa các thẻ neo với một ____10_______6 giữa thẻ và h3
Hãy tạo một tệp js mới, đặt tên là scraperapi2. js và thêm
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; let scraped_headlines = [];[async [] => { const browser = await puppeteer.launch[]; const page = await browser.newPage[]; }7 để nhập thư viện vào dự án. Sau đó, thêm đoạn mã sau
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; let scraped_headlines = [];[async [] => { const browser = await puppeteer.launch[]; const page = await browser.newPage[]; }
Trước tiên, chúng tôi đang sử dụng
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; let scraped_headlines = [];[async [] => { const browser = await puppeteer.launch[]; const page = await browser.newPage[]; }8 để khai báo nơi dữ liệu của chúng tôi sẽ được lưu trữ. Sau đó, chúng tôi viết một hàm async để cho phép chúng tôi sử dụng toán tử chờ đợi
Ghi chú. mặc dù bạn có thể tạo trình quét bằng cách sử dụng ____10_______9 lệnh gọi lại, nhưng điều đó sẽ chỉ giới hạn khả năng mở rộng của trình quét của bạn và khiến việc cạo nhiều trang cùng một lúc trở nên khó khăn hơn
Sau khi thiết lập xong, chúng tôi yêu cầu Puppeteer khởi chạy trình duyệt, đợi
try { await page.goto['//www.reddit.com/r/webscraping/', {timeout: 180000}]; let bodyHTML = await page.evaluate[[] => document.body.innerHTML];0
try { await page.goto['//www.reddit.com/r/webscraping/', {timeout: 180000}]; let bodyHTML = await page.evaluate[[] => document.body.innerHTML];1
try { await page.goto['//www.reddit.com/r/webscraping/', {timeout: 180000}]; let bodyHTML = await page.evaluate[[] => document.body.innerHTML];2 để trình duyệt khởi chạy, sau đó mở một trang mới
Bây giờ, hãy mở một câu lệnh và sử dụng khối mã tiếp theo để báo cho trình duyệt biết URL nào sẽ truy cập và để Puppeteer lấy mã HTML sau khi nó hiển thị
try { await page.goto['//www.reddit.com/r/webscraping/', {timeout: 180000}]; let bodyHTML = await page.evaluate[[] => document.body.innerHTML];
Chúng ta đã quen thuộc với bước tiếp theo. Vì chúng tôi đã nhận được tài liệu HTML nên chúng tôi cần gửi tài liệu đó tới Cheerio để chúng tôi có thể sử dụng bộ chọn CSS của mình và lấy nội dung chúng tôi cần
try { await page.goto['//www.reddit.com/r/webscraping/', {timeout: 180000}]; let bodyHTML = await page.evaluate[[] => document.body.innerHTML]; let $ = cheerio.load[bodyHTML]; let article_headlines = $['a[href*="/r/webscraping/comments"] > div'] article_headlines.each[[index, element] => { title = $[element].find['h3'].text[] scraped_headlines.push[{ 'title': title }] }]; }
Trong trường hợp này, chúng tôi đã thêm ____22_______3 div' vào bộ chọn đầu tiên để báo cho trình quét của chúng tôi biết nơi tìm dữ liệu, trước khi yêu cầu nó trả về văn bản trong thẻ H3 với ____22_______4
Cuối cùng, chúng tôi sử dụng
try { await page.goto['//www.reddit.com/r/webscraping/', {timeout: 180000}]; let bodyHTML = await page.evaluate[[] => document.body.innerHTML];5 để thêm từ “tiêu đề. ” trước mỗi chuỗi dữ liệu. Điều này làm cho nó dễ đọc hơn
Sau khi cập nhật mã của bạn, nó sẽ trông như thế này
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; let scraped_headlines = []; [async [] => { const browser = await puppeteer.launch[]; const page = await browser.newPage[]; try { await page.goto['//www.reddit.com/r/webscraping/', {timeout: 180000}]; let bodyHTML = await page.evaluate[[] => document.body.innerHTML]; let $ = cheerio.load[bodyHTML]; let article_headlines = $['a[href*="/r/webscraping/comments"] > div'] article_headlines.each[[index, element] => { title = $[element].find['h3'].text[] scraped_headlines.push[{ 'title': title }] }]; } catch[err] { console.log[err]; } await browser.close[]; console.log[scraped_headlines] }][];
Bây giờ bạn có thể kiểm tra mã của mình bằng cách sử dụng
6. Nó sẽ trả về tất cả các tiêu đề H3 mà nó có thể tìm thấy trên trang được hiển thịtry { await page.goto['//www.reddit.com/r/webscraping/', {timeout: 180000}]; let bodyHTML = await page.evaluate[[] => document.body.innerHTML];
Ghi chú. Để có cái nhìn sâu hơn về thư viện này, đây là tài liệu của Puppeteer
Sử dụng ScraperAPI để quét dữ liệu nhanh hơn
Như bạn đã thấy trong hướng dẫn này, xây dựng một công cụ quét web là một dự án đơn giản với nhiều tiềm năng. Tuy nhiên, vấn đề thực sự với máy cạo tự chế là khả năng mở rộng
Một trong những thách thức mà bạn sẽ phải đối mặt là xử lý- ví dụ như – CAPTCHA. Trong khi chạy chương trình của bạn, địa chỉ IP của bạn có thể được xác định là người dùng gian lận, khiến IP của bạn bị cấm
Nếu bạn chạy trình quét của mình trên máy chủ được lưu trữ trong trung tâm dữ liệu, bạn thậm chí có nhiều khả năng bị chặn ngay lập tức. Tại sao? . ”
Tất cả những rào cản này khiến việc quét web trở nên khó khăn và đó là lý do tại sao chúng tôi đã phát triển một API có thể tự động xử lý tất cả chúng. từ xoay địa chỉ IP, xử lý CAPTCHA và hiển thị JavaScript, ScraperAPI xử lý mọi thứ chỉ bằng một lệnh gọi API
Để tìm hiểu cách tích hợp ScraperAPI với các công cụ dọn dẹp của chúng tôi, chúng tôi sẽ cần tạo một tài khoản ScraperAPI mới – bạn sẽ nhận được 1000 tín dụng API miễn phí ngay lập tức, vì vậy bạn có quá đủ để dùng thử API
Sau khi đăng ký, bạn sẽ có quyền truy cập vào khóa API của mình và một số mã mẫu để bạn sử dụng làm tài liệu tham khảo
Bây giờ, hãy tích hợp ScraperAPI với trình cạp Axios của chúng tôi
Tích hợp ScraperAPI với các yêu cầu Axios
Điều này là siêu đơn giản. Tất cả những gì chúng ta cần làm là thêm khóa API dưới dạng
try { await page.goto['//www.reddit.com/r/webscraping/', {timeout: 180000}]; let bodyHTML = await page.evaluate[[] => document.body.innerHTML];7 và sau đó yêu cầu Axios sử dụng điểm cuối ScraperAPI của chúng ta
let axios = require['axios']; const cheerio = require['cheerio']< const API_KEY = ''YOUR_API_KEY'' const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios['//api.scraperapi.com/', { params: { 'url': url, 'api_key': API_KEY, }}]
Bây giờ mọi yêu cầu sẽ đi qua ScraperAPI và nó sẽ trở lại với HTML mà sau đó chúng ta có thể chuyển đến Cheerio như trước đây
Ngoài ra, vì nó được tích hợp đầy đủ với trình cạp của chúng tôi, chúng tôi có thể thêm các tham số khác vào mã của mình để thêm nhiều chức năng hơn thông qua API
Một trường hợp sử dụng tuyệt vời cho việc này là quét một trang web JavaScript mà không cần sử dụng trình duyệt không đầu
Bằng cách đặt
try { await page.goto['//www.reddit.com/r/webscraping/', {timeout: 180000}]; let bodyHTML = await page.evaluate[[] => document.body.innerHTML];8, ScraperAPI sẽ sử dụng trình duyệt crom không đầu để thực thi tập lệnh và trả về với HTML được tải đầy đủ
Đây là mã Axios + Cheerio cuối cùng
let axios = require['axios']; const cheerio = require['cheerio']; const API_KEY = '51e43be283e4db2a5afb6266xxxxxxxx' const render = 'true' const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios['//api.scraperapi.com/', { params: { 'url': url, 'api_key': API_KEY, 'render' : render }}] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];
Tích hợp ScraperAPI với Puppeteer
Chắc bạn đang nghĩ. nếu tôi có thể hiển thị JavaScript bằng ScraperAPI, tại sao tôi lại cần triển khai Puppeteer?
lý do rất đơn giản. ScraperAPI sẽ thực thi JavaScript cần thiết để tải trang. Tuy nhiên, nếu bạn cần tương tác với trang [như cuộn hoặc nhấp vào nút], bạn sẽ cần sử dụng trình duyệt không đầu của riêng mình – trong trường hợp này là Puppeteer
Đối với ví dụ này, chúng tôi sẽ thêm đoạn mã sau để đặt cấu hình proxy của mình, ngay sau khi khai báo các phụ thuộc của chúng tôi
const cheerio = require['cheerio']; const puppeteer = require['puppeteer']; PROXY_USERNAME = 'scraperapi'; PROXY_PASSWORD = 'API_KEY'; // { const browser = await puppeteer.launch[{ ignoreHTTPSErrors: true, args: [ '--proxy-server=//${PROXY_SERVER}:${PROXY_SERVER_PORT}' ] }]; const page = await browser.newPage[]; await page.authenticate[{ username: PROXY_USERNAME, password: PROXY_PASSWORD, }];
Sau khi cập nhật mã của bạn, nó sẽ trông như thế này
const axios = require['axios']; const cheerio = require['cheerio'] const url = '//www.turmerry.com/collections/organic-cotton-sheet-sets/products/percale-natural-color-organic-sheet-sets'; axios[url] .then[response => { const html = response.data; const $ = cheerio.load[html] const salePrice = $['.sale-price'].text[] console.log[salePrice]; }] .catch[console.error];0
Và thế là xong, API của bạn đã sẵn sàng để sử dụng
Để tận dụng tối đa tài khoản của mình, bạn có thể làm theo bảng cheat ScraperAPI này. Ở đó, bạn sẽ tìm thấy các phương pháp hay nhất để quét web bằng API của chúng tôi cùng với một số thách thức chính mà bạn sẽ gặp phải chi tiết hơn
Ngoài ra, hãy lưu tích hợp nghệ sĩ múa rối này với mã mẫu ScraperAPI để theo dõi mỗi khi bạn xây dựng một dự án mới. Nó chắc chắn sẽ cắt giảm một số thời gian mã hóa
Chúng tôi hy vọng bạn thích hướng dẫn này và bạn đã học được một hoặc hai điều từ nó. Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại liên hệ với nhóm hỗ trợ của chúng tôi, họ sẽ sẵn lòng trợ giúp
hạnh phúc cạo
Thông tin về các Tác giả
Zoltan Bettenbuk
Zoltan Bettenbuk là CTO của ScraperAPI - giúp hàng nghìn công ty truy cập vào dữ liệu họ cần. Anh ấy là một chuyên gia nổi tiếng về xử lý dữ liệu và quét web. Với hơn 15 năm kinh nghiệm trong lĩnh vực phát triển phần mềm, quản lý sản phẩm và lãnh đạo, Zoltan thường xuyên công bố những hiểu biết của mình trên blog của chúng tôi cũng như trên Twitter và LinkedIn
Mục lục
Những bài viết liên quan
Giá cạo web. Lựa chọn giải pháp phù hợp
Khi lượng dữ liệu toàn cầu được tạo ra đạt con số khổng lồ 2. 5 triệu byte mỗi ngày, việc quét web đã trở nên không thể thiếu đối với bất kỳ doanh nghiệp nào muốn
đọc bài viếtNgày 9 tháng 1 năm 2023
Cách ẩn địa chỉ IP của bạn để quét web
Scrapers điều hướng internet theo cách chúng tôi làm thông qua các trình duyệt của chúng tôi. Khi chúng tôi cung cấp một URL cho trình quét của mình, nó sẽ gửi một yêu cầu HTTP với
đọc bài viếtNgày 15 tháng 12 năm 2022
Cách cạo dữ liệu quảng cáo Google của đối thủ cạnh tranh để cải thiện chính bạn
Quảng cáo trả tiền [PPC] là một không gian cạnh tranh, đòi hỏi các chiến thuật thông minh để thành công. Khi kênh quảng cáo này trưởng thành và chi phí quảng cáo tiếp tục tăng đáng kể,