Web scraping là quá trình trích xuất dữ liệu từ các trang web. Bạn có thể thực hiện việc trích xuất dữ liệu thủ công bằng trình duyệt web hoặc tự động hóa quy trình này bằng các thư viện như Selenium và Puppeteer.
Selenium là một công cụ mã nguồn mở cho phép bạn tự động hóa các ứng dụng web và kiểm thử chức năng của trang web mà không cần phải viết bất kỳ đoạn mã nào trực tiếp trên trình duyệt. Công cụ này cũng tương thích với các ngôn ngữ lập trình khác như Java, Python, C#, v.v.
Puppeteer là một thư viện JavaScript dùng để tự động hóa các bài kiểm thử trình duyệt Chrome trên các hệ thống Linux không có giao diện đồ họa. Puppeteer hỗ trợ Chrome và đã được kiểm thử trên Ubuntu 16.04 LTS, 18.04 LTS, cũng như Debian 9 Stretch/Buster/Siduction (64-bit).
Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng Selenium WebDriver trong NodeJS kết hợp với Puppeteer để tự động hóa các ứng dụng thông qua trình duyệt Chrome.
Puppeteer là gì?
Puppeteer là một thư viện JavaScript cho phép bạn điều khiển trình duyệt thông qua puppeteer.js. Thư viện này cung cấp một giao diện lập trình ứng dụng (API) để tạo, quản lý và tương tác với các trang web mà không cần dựa vào bất kỳ bên thứ ba nào. Nó cũng hỗ trợ ghi nhận các sự kiện chuột và nhập liệu từ bàn phím, giúp bạn tương tác với trang web.
Puppeteer hoạt động như thế nào?
Puppeteer là một thư viện Node.js dùng để điều khiển Chrome. Thư viện này cho phép bạn điều khiển trình duyệt bằng JavaScript và tương tác với nó theo những cách mà không thể thực hiện được nếu chỉ sử dụng HTML, CSS và JS.
Bạn có thể sử dụng nó để mô phỏng các sự kiện chuột/bàn phím, chụp ảnh màn hình, thao tác với các phần tử DOM, gửi yêu cầu HTTP, v.v. Puppeteer còn có một API cho phép bạn viết các kịch bản điều khiển mà không cần sử dụng trực tiếp bất kỳ API nào của nó. Bạn có thể tìm hiểu thêm về API này tại đây: https://github.com/puppeteerjs/puppeteer-api.
Puppeteer giải quyết vấn đề sau: Làm thế nào để điều khiển trình duyệt mà không cần chạy JavaScript? Puppeteer cho phép bạn mô phỏng các sự kiện chuột/bàn phím, chụp ảnh màn hình, thao tác với các phần tử DOM, gửi yêu cầu HTTP và nhiều tính năng khác. Bạn cũng có thể viết các tập lệnh Puppeteer mà không cần sử dụng trực tiếp bất kỳ API nào của nó. Điều này rất hữu ích nếu bạn muốn phát triển tiện ích mở rộng Chrome của riêng mình để tương tác với trình duyệt theo những cách không thông thường.
Bối cảnh về độ phức tạp và tự động hóa đang thay đổi từng ngày, vì vậy một công cụ duy nhất có thể không phải là giải pháp phù hợp cho mọi trường hợp. Puppeteer có một số hạn chế. Công cụ này chỉ hỗ trợ trình duyệt Chrome. Phiên bản Puppeteer dành cho Firefox hiện vẫn đang trong quá trình phát triển.
Những ưu điểm của việc sử dụng Puppeteer là gì?
Puppeteer cung cấp một cách đơn giản để chạy các tập lệnh trong trình duyệt mà không cần phải tự viết chúng. Công cụ này rất dễ sử dụng, nhẹ và có khả năng mở rộng. Bạn có thể sử dụng nó với bất kỳ ngôn ngữ lập trình hoặc khung công tác nào (NodeJS, Python, Java). Công cụ này có API riêng, nên bạn không cần phải học thêm một API khác chỉ để thực hiện việc thu thập dữ liệu trên web.
Bạn không cần phải hiểu Selenium hoạt động như thế nào để sử dụng Puppeteer, nhưng vẫn có thể tận dụng tất cả các lợi ích của nó: tự động hóa, khả năng kiểm thử và tính di động!
Những nhược điểm khi sử dụng Puppeteer là gì?
Puppeteer là một framework còn rất mới. Nó hiện vẫn đang ở giai đoạn beta và chưa hỗ trợ tất cả các trình duyệt (chỉ hỗ trợ Chrome, Firefox, Opera và Safari). Tuy nhiên, theo thời gian, Puppeteer sẽ có thể hỗ trợ thêm nhiều trình duyệt hơn. Giao diện lập trình ứng dụng (API) của nó cũng chưa hoàn thiện như Selenium, nên ban đầu bạn có thể gặp một số khó khăn, nhưng tình hình sẽ được cải thiện dần theo thời gian. Bạn có thể tìm thấy nhiều ví dụ về cách sử dụng Puppeteer trên trang web chính thức của nó: puppeteerjs.com/docs/getting-started/.
Làm thế nào để cài đặt Puppeteer?
Bạn có thể cài đặt Puppeteer bằng cách tải gói phần mềm từ trang web hoặc cài đặt thủ công. Truy cập trang kho lưu trữ Puppeteer và tải xuống phiên bản mới nhất dành cho hệ điều hành của bạn. Để chạy chương trình, máy tính của bạn cần cài đặt NodeJS. Nếu bạn chưa biết bắt đầu từ đâu, hãy truy cập tại đây: nodejs.org/en/download. Chạy lệnh npm install -g puppet. Lệnh này sẽ tải xuống tất cả các gói phụ thuộc cần thiết để chạy puppetserver. Bây giờ, hãy mở cửa sổ terminal trong thư mục home của bạn và nhập lệnh puppetserver.
Nếu mọi việc diễn ra suôn sẻ, bạn sẽ thấy một màn hình tương tự như thế này:
$ node server Starting server… done! http://localhost:4200 Connecting…done! http://localhost:4200 Disconnected / Connected http://localhost:4200 <– Start scraping now!
Để dừng, hãy nhấn Ctrl+C, sau đó nhập exit.
Selenium là gì?
Selenium là một công cụ mạnh mẽ mà bạn có thể sử dụng để tự động hóa các ứng dụng dựa trên web. Nó còn thường được gọi làWebdriver. Selenium đã xuất hiện từ khá lâu và đã trở thành một trong những công cụ phổ biến nhất trong ngành công nghệ thông tin.
Selenium có tác dụng gì?
Selenium cho phép bạn tự động hóa các trang web của mình bằng cách thực hiện các thao tác khác nhau như nhấp vào nút, điền biểu mẫu hoặc thậm chí duyệt qua các trang. Mục tiêu chính của phần mềm này là giúp việc kiểm thử tự động trở nên dễ dàng và hiệu quả mà không cần phải tự viết mã. Bạn có thể sử dụng phần mềm này trực tiếp từ trình duyệt (Chrome/Firefox) hoặc thông qua các ngôn ngữ lập trình như Java, C# hay Python, v.v. Sau khi cài đặt trên máy tính, bạn phải tải xuống máy chủ Selenium, chạy trên cổng 4444 (mặc định). Tiếp theo, mở Chrome/Firefox và nhập chrome://extensions vào thanh địa chỉ, nơi bạn sẽ thấy danh sách các tiện ích mở rộng có sẵn; chọnQuản lý tiện ích mở rộng, sau đó nhấp vào nútTải tiện ích mở rộng chưa đóng gói.
Bạn có thể sử dụng Selenium để kiểm thử các trang web, ứng dụng di động và ứng dụng máy tính để bàn. Công cụ này rất dễ sử dụng và cho phép bạn tự động hóa các ứng dụng dựa trên web mà không cần bất kỳ kiến thức lập trình nào. Bạn cũng có thể tự tạo các bài kiểm thử của riêng mình bằng Selenium IDE, công cụ này có giao diện trực quan giúp phát triển các bài kiểm thử một cách thân thiện với người dùng.
Những ưu điểm của Selenium
- Nó hoạt động trên tất cả các trình duyệt web (Chrome, Firefox, IE) và thiết bị di động (Android). Selenium là công cụ đa nền tảng. Tất cả những gì bạn cần làm là cài đặt một môi trường phát triển tích hợp (IDE) cho nền tảng mà bạn chọn và bắt đầu sử dụng API. Bạn không cần phải học các API mới hay các ngôn ngữ lập trình khác nhau cho từng nền tảng – chỉ cần sử dụng một ngôn ngữ duy nhất có thể chạy trên tất cả các nền tảng.
- Selenium hỗ trợ hầu hết các ngôn ngữ lập trình hiện có, bao gồm Java, C#, Python và nhiều ngôn ngữ khác. Nếu bạn muốn tự động hóa một tác vụ nào đó bằng JavaScript, bạn có thể sử dụng NodeJS cùng với selenium-nodejs.
- Selenium hỗ trợ một số framework như Protractor, WebDriver, v.v. Điểm nổi bật nhất của các framework này là chúng cung cấp một lớp trừu tượng hóa hữu ích, giúp việc thực hiện trở nên dễ dàng hơn so với việc viết trực tiếp mã tự động hóa trình duyệt thuần túy vào chính trình duyệt. Ví dụ, nếu chúng ta muốn các bài kiểm thử chạy trên nhiều trình duyệt cùng lúc, thì có thể thực hiện điều này bằng selenium-webdriver và selenium-webdriver2. Điều này có nghĩa là chúng ta sẽ không gặp bất kỳ vấn đề nào khi kiểm thử trên nhiều trình duyệt cùng lúc vì mọi thứ sẽ được chính framework xử lý thay vì phải viết mã tùy chỉnh thủ công cho từng trình duyệt (điều này sẽ khiến bộ kiểm thử của chúng ta trở nên phức tạp hơn rất nhiều).
- Có rất nhiều plugin dành cho Selenium, chẳng hạn như các tiện ích mở rộng của Google Chrome, tiện ích bổ sung của Firefox, v.v. Còn gì nữa? Rất nhiều ví dụ! Và không chỉ từ các dự án mã nguồn mở mà còn từ các dự án thương mại như Appium, Sauce Labs hay Watir. Vì vậy, nếu bạn đang tìm kiếm một giải pháp nhanh chóng và dễ dàng, hãy thử chúng xem! Đây là những công cụ tuyệt vời! Chúng cũng hỗ trợ thử nghiệm không đồng bộ, có nghĩa là ngay cả khi thử nghiệm của bạn có thể mất nhiều thời gian hơn dự kiến, nó cũng sẽ không ảnh hưởng đến các thử nghiệm khác đang chạy song song mà không làm gián đoạn luồng thực thi lẫn nhau (chế độ không đồng bộ). Bằng cách này, chúng ta có thể viết các thử nghiệm giao diện người dùng nhanh chóng mà không lo làm chậm ứng dụng của mình.
Xu hướng thị trường về Selenium và Puppeteer: Tại sao bạn nên quan tâm?
Xu hướng thị trường của Selenium và Puppeteer cho thấy mức độ sử dụng hai công cụ này đã tăng đáng kể trong vài năm qua, đặc biệt là kể từ khi Selenium 2 được phát hành vào năm 2014. Mức độ phổ biến của Selenium tiếp tục gia tăng kể từ đó, điều này có nghĩa là nó nhiều khả năng sẽ tiếp tục tăng trưởng với tốc độ này trong tương lai gần.
Tương lai của việc kiểm thử web sẽ ra sao?
Cộng đồng mã nguồn mở vẫn tiếp tục phát triển các công nghệ mới và cải tiến những công nghệ hiện có mà không có dấu hiệu nào cho thấy sẽ chững lại trong thời gian tới. Miễn là chúng ta tiếp tục đổi mới và tạo ra các công cụ mới, chúng ta có thể kỳ vọng sẽ có thêm nhiều cải tiến trong công nghệ kiểm thử web.
Các công cụ tự động hóa web: Tại sao bạn nên sử dụng chúng?
Khi các thành viên trong nhóm của bạn bắt tay vào thực hiện các dự án của mình hoặc khi họ cần hỗ trợ để kiểm thử mã nguồn bằng các bài kiểm thử tự động, việc có thể sử dụng một công cụ tự động hóa như WebDriver sẽ giúp công việc của họ trở nên dễ dàng hơn rất nhiều so với việc phải tự tay thực hiện các giải pháp thủ công mỗi khi muốn kiểm thử một thứ gì đó theo cách thủ công.
Khi bạn có một công cụ tự động hóa web như WebDriver, bạn có thể sử dụng nó để tự động hóa các bài kiểm thử và viết chúng bằng nhiều ngôn ngữ lập trình khác nhau. Bạn cũng có thể dùng nó để tương tác với trình duyệt và kiểm thử các tính năng cụ thể của ứng dụng mà việc thực hiện thủ công rất khó hoặc thậm chí không thể. Khả năng là vô tận!
Việc sử dụng một công cụ tự động hóa sẽ giúp bạn tiết kiệm rất nhiều thời gian và công sức, bởi nó cho phép bạn viết các bài kiểm thử tự động cho cơ sở mã của mình mà không cần phải bận tâm đến cách thức hoạt động bên trong của hệ thống.
Selenium hay Puppeteer: Công cụ nào phù hợp nhất để trích xuất dữ liệu từ web?
Sự khác biệt chính giữa hai công cụ này là Puppeteer chạy trên Node.js, còn Selenium chạy trên trình duyệt.
Bạn có thể sử dụng Puppeteer để trích xuất dữ liệu web và kiểm thử API, nhưng công cụ này không được hỗ trợ rộng rãi như Selenium. Ngoài ra, Puppeteer cũng không có trình chạy kiểm thử giao diện người dùng (UI) tích hợp sẵn, vì vậy bạn sẽ cần phải tự viết trình chạy kiểm thử này nếu muốn sử dụng nó với trình duyệt không giao diện người dùng (headless) như PhantomJS hoặc NightwatchJS.
Selenium nhận được sự hỗ trợ từ các trình duyệt nhiều hơn so với Puppeteer, và công cụ chạy thử nghiệm giao diện người dùng (UI) của nó hoạt động ngay lập tức với hầu hết các trình duyệt phổ biến (bao gồm cả Chrome). Tuy nhiên, so với Puppeteer, Selenium vẫn còn thiếu một số tính năng. Đáng chú ý là các API WebDriver để tương tác với các phần tử trên trang – điều này có nghĩa là việc tự động hóa các tương tác phức tạp trên nhiều trang/miền/ứng dụng (ví dụ: nhấp vào liên kết) sẽ khó khăn hơn nếu chỉ sử dụng thư viện này.
Sự vững mạnh của doanh nghiệp bạn phụ thuộc hoàn toàn vào thời gian hoạt động của proxy. Hãy chuyển sang sử dụng các proxy ISP tĩnh cấp doanh nghiệp để tận hưởng tốc độ chuyên dụng và độ tin cậy vững chắc. HOẶC Triển khai các proxy dân dụng luân phiên để đạt tỷ lệ thành công khi thu thập dữ liệu lên đến 99,9%.
