
Anh Tuan
Data Science Expert

Có những lúc bạn tò mò, chẳng hạn như cách các nhà khoa học dữ liệu thu thập lượng lớn dữ liệu trực tuyến cho nghiên cứu, tiếp thị và phân tích? Web scraping trong R là một kỹ năng mạnh mẽ có thể chuyển đổi nội dung trực tuyến thành các tập dữ liệu có giá trị, cho phép đưa ra quyết định dựa trên dữ liệu và hiểu biết sâu sắc hơn. Vậy, điều gì làm cho web scraping trở nên khó khăn, và R có thể giúp ích như thế nào? Trong hướng dẫn này, chúng ta sẽ cùng nhau thiết lập môi trường R của bạn, trích xuất dữ liệu từ các trang web, xử lý các trường hợp phức tạp hơn như nội dung động, và kết thúc bằng các thực tiễn tốt nhất để duy trì đạo đức và tuân thủ.
R là một ngôn ngữ và môi trường chủ yếu được sử dụng để phân tích thống kê và trực quan hóa dữ liệu. Ban đầu phổ biến trong số các nhà thống kê trong giới học thuật, R đã mở rộng cơ sở người dùng của mình cho các nhà nghiên cứu trong nhiều lĩnh vực khác nhau. Với sự gia tăng của dữ liệu lớn, các chuyên gia từ lĩnh vực máy tính và kỹ thuật đã đóng góp đáng kể vào việc nâng cao công cụ tính toán, hiệu suất và hệ sinh thái của R, thúc đẩy sự phát triển của nó.
Là một công cụ tích hợp để phân tích thống kê và hiển thị đồ họa, R rất linh hoạt, chạy liền mạch trên UNIX, Windows và macOS. Nó có một hệ thống trợ giúp mạnh mẽ, thân thiện với người dùng và được thiết kế cho khoa học dữ liệu, cung cấp một bộ thư viện tập trung vào dữ liệu phong phú, lý tưởng cho các tác vụ như web scraping.
Tuy nhiên, bất kể ngôn ngữ lập trình bạn sử dụng để web scraping, điều cần thiết là phải tuân thủ giao thức robots.txt của trang web. Tìm thấy trong thư mục gốc của hầu hết các trang web, tệp này chỉ định trang nào có thể và không thể được thu thập dữ liệu. Tuân theo giao thức này giúp tránh các tranh chấp không cần thiết với chủ sở hữu trang web.
Trước khi sử dụng R để web scraping, hãy đảm bảo bạn có một môi trường R được cấu hình đúng cách:
Tải xuống và cài đặt R:
Truy cập trang web chính thức của Dự án R và tải xuống gói cài đặt phù hợp cho hệ điều hành của bạn.
Chọn một IDE cho R:
Chọn một môi trường phát triển để chạy mã R:
Nếu sử dụng PyCharm:
Bạn sẽ cần cài đặt plugin Ngôn ngữ R cho IntelliJ để chạy mã R trong PyCharm.
Đối với hướng dẫn này, chúng ta sẽ sử dụng PyCharm để tạo dự án web scraping R đầu tiên của mình. Bắt đầu bằng cách mở PyCharm và tạo một dự án mới.
Click "Create," và PyCharm sẽ khởi tạo dự án R của bạn. Nó sẽ tự động tạo một tệp main.R trống. Ở bên phải và phía dưới giao diện, bạn sẽ tìm thấy các tab Công cụ R và Bảng điều khiển R, tương ứng. Các tab này cho phép bạn quản lý các gói R và truy cập shell R, như được hiển thị trong hình ảnh bên dưới:
Hãy lấy bài tập đầu tiên từ ScrapingClub làm ví dụ để chứng minh cách sử dụng R để thu thập dữ liệu hình ảnh sản phẩm, tiêu đề, giá cả và mô tả:
rvestrvest là một gói R được thiết kế để hỗ trợ web scraping. Nó đơn giản hóa các tác vụ web scraping phổ biến và hoạt động liền mạch với gói magrittr để cung cấp một đường dẫn dễ sử dụng để trích xuất dữ liệu. Gói này lấy cảm hứng từ các thư viện như Beautiful Soup và RoboBrowser.
Để cài đặt rvest trong PyCharm, hãy sử dụng Bảng điều khiển R nằm ở cuối giao diện. Nhập lệnh sau:
install.packages("rvest")
Trước khi bắt đầu cài đặt, PyCharm sẽ nhắc bạn chọn một CRAN mirror (nguồn gói). Chọn cái gần vị trí của bạn nhất để tải xuống nhanh hơn. Sau khi cài đặt, bạn đã sẵn sàng để bắt đầu thu thập dữ liệu!
Gói rvest cung cấp hàm read_html(), hàm này truy xuất nội dung HTML của một trang web khi được cung cấp URL của nó. Dưới đây là cách bạn có thể sử dụng nó để lấy HTML của một trang web mục tiêu:
library(rvest)
url <- "https://scrapingclub.com/exercise/detail_basic/"
webpage <- rvest::read_html(url)
print(webpage)
Việc chạy mã này sẽ xuất mã nguồn HTML của trang trong Bảng điều khiển R, cung cấp cho bạn cái nhìn rõ ràng về cấu trúc của trang web. Đây là nền tảng để trích xuất các phần tử cụ thể như chi tiết sản phẩm.
Để trích xuất dữ liệu cụ thể từ một trang web, trước tiên chúng ta cần hiểu cấu trúc của nó. Sử dụng công cụ dành cho nhà phát triển của trình duyệt, bạn có thể kiểm tra các phần tử và xác định vị trí dữ liệu mong muốn. Dưới đây là bản tóm tắt các phần tử mục tiêu trên trang ví dụ:
img với lớp card-img-top.<h3>.<h4>.<p> với lớp card-description.Gói rvest trong R cung cấp các công cụ mạnh mẽ để phân tích và trích xuất nội dung từ các tài liệu HTML. Dưới đây là một số hàm chính được sử dụng để web scraping:
html_nodes(): Chọn tất cả các nút (thẻ HTML) từ tài liệu khớp với bộ chọn CSS được chỉ định. Nó cho phép bạn lọc nội dung hiệu quả bằng cú pháp giống như CSS.html_attr(): Trích xuất giá trị của một thuộc tính được chỉ định từ các nút HTML đã chọn. Ví dụ: bạn có thể truy xuất thuộc tính src cho hình ảnh hoặc href cho liên kết.html_text(): Trích xuất nội dung văn bản thuần túy bên trong các nút HTML đã chọn, bỏ qua các thẻ HTML.Dưới đây là cách bạn có thể sử dụng các hàm này để thu thập dữ liệu từ một trang mẫu:
library(rvest)
# URL của trang web mục tiêu
url <- "https://scrapingclub.com/exercise/detail_basic/"
webpage <- rvest::read_html(url)
# Trích xuất dữ liệu
img_src <- webpage %>% html_nodes("img.card-img-top") %>% html_attr("src") # Nguồn hình ảnh
title <- webpage %>% html_nodes("h3") %>% html_text() # Tiêu đề sản phẩm
price <- webpage %>% html_nodes("h4") %>% html_text() # Giá sản phẩm
description <- webpage %>% html_nodes("p.card-description") %>% html_text() # Mô tả sản phẩm
# Hiển thị dữ liệu đã trích xuất
print(img_src)
print(title)
print(price)
print(description)
Giải thích mã
read_html() lấy toàn bộ cấu trúc HTML của trang web mục tiêu.html_nodes(), bạn có thể nhắm mục tiêu các phần tử cụ thể như hình ảnh, tiêu đề và mô tả.html_attr() trích xuất giá trị thuộc tính như src cho hình ảnh, trong khi html_text() truy xuất nội dung văn bản bên trong các thẻ.Ví dụ đầu ra
Khi bạn chạy mã ở trên, dữ liệu đã trích xuất sẽ được hiển thị trong bảng điều khiển R của bạn. Ví dụ:
/images/example.jpg.Điều này cho phép bạn thu thập dữ liệu có cấu trúc hiệu quả từ trang web, sẵn sàng cho việc phân tích hoặc lưu trữ thêm.
Xem trước kết quả
Sau khi chạy script, bạn sẽ thấy nội dung đã trích xuất trong bảng điều khiển R của mình, như minh họa bên dưới:
Sử dụng rvest, bạn có thể tự động hóa quá trình web scraping cho nhiều nhu cầu dữ liệu có cấu trúc khác nhau, đảm bảo đầu ra sạch sẽ và có thể hoạt động được.
Trong các kịch bản thu thập dữ liệu thực tế, quá trình này hiếm khi đơn giản như bản trình diễn trong bài viết này. Bạn thường gặp phải nhiều thách thức về bot, chẳng hạn như hệ thống reCAPTCHA được sử dụng rộng rãi và các hệ thống tương tự.
Các hệ thống này được thiết kế để xác nhận xem các yêu cầu có hợp pháp hay không bằng cách thực hiện các biện pháp như:
Tất cả các biện pháp này có thể cản trở đáng kể nỗ lực thu thập dữ liệu của bạn. Tuy nhiên, không cần phải lo lắng. Mỗi một trong những thách thức về bot này đều có thể được giải quyết hiệu quả với CapSolver.
CapSolver sử dụng công nghệ Tự động mở khóa web dựa trên AI, có khả năng giải quyết ngay cả những thách thức CAPTCHA phức tạp nhất chỉ trong vài giây. Nó tự động hóa các tác vụ như giải mã JavaScript được mã hóa, tạo dấu vân tay trình duyệt hợp lệ và giải các câu đố CAPTCHA nâng cao — đảm bảo thu thập dữ liệu không bị gián đoạn.
Nhận mã khuyến mãi của bạn cho các giải pháp captcha hàng đầu; CapSolver: WEBS. Sau khi đổi mã, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, Không giới hạn
CapSolver cung cấp SDK trong nhiều ngôn ngữ lập trình, cho phép bạn tích hợp liền mạch các tính năng của nó vào dự án của mình. Cho dù bạn đang sử dụng Python, R, Node.js hay các công cụ khác, CapSolver đều đơn giản hóa quá trình triển khai.
Tài liệu chính thức của CapSolver cung cấp các hướng dẫn và ví dụ chi tiết để giúp bạn bắt đầu. Bạn có thể khám phá thêm các khả năng và tùy chọn cấu hình ở đó, đảm bảo trải nghiệm thu thập dữ liệu mượt mà và hiệu quả.
Web scraping với R mở ra một thế giới khả năng cho việc thu thập và phân tích dữ liệu, biến nội dung trực tuyến không có cấu trúc thành những hiểu biết có thể hoạt động được. Với các công cụ như rvest để trích xuất dữ liệu hiệu quả và các dịch vụ như CapSolver để khắc phục các thách thức về thu thập dữ liệu, bạn có thể sắp xếp hợp lý ngay cả những dự án thu thập dữ liệu phức tạp nhất.
Tuy nhiên, hãy luôn nhớ tầm quan trọng của các thực tiễn thu thập dữ liệu có đạo đức. Tuân thủ các hướng dẫn của trang web, tôn trọng tệp robots.txt và đảm bảo tuân thủ các tiêu chuẩn pháp lý là điều cần thiết để duy trì một cách tiếp cận thu thập dữ liệu có trách nhiệm và chuyên nghiệp.
Được trang bị kiến thức và công cụ được chia sẻ trong hướng dẫn này, bạn đã sẵn sàng bắt đầu hành trình web scraping của mình với R. Khi bạn có thêm kinh nghiệm, bạn sẽ khám phá ra các cách để xử lý các kịch bản đa dạng, mở rộng bộ công cụ thu thập dữ liệu của mình và mở khóa toàn bộ tiềm năng của việc ra quyết định dựa trên dữ liệu.
Hãy học cách xác định nguyên nhân gây ra lỗi Cloudflare 1020 Truy cập Bị Từ Chối, cách Tường lửa Ứng dụng Web và phát hiện bot hoạt động, và cách các nhà phát triển giảm thiểu kết quả dương tính giả trong các quy trình tự động hợp lệ.

Học cách sử dụng mẫu CapSolver n8n để theo dõi các trang sản phẩm được bảo vệ bởi AWS WAF, giải quyết các thách thức, trích xuất giá cả, so sánh các thay đổi và kích hoạt cảnh báo tự động.
