Cách crawl dữ liệu bằng python selenium
Bài viết này chúng ta tìm hiểu cách sử dụng Selenium và Python để thu thập và tương tác với bất kỳ trang web nào. Show
Selenium là công cụ tự động hóa trình duyệt web ban đầu được thiết kế để tự động hóa các ứng dụng web cho mục đích thử nghiệm (testing). Nó hiện được sử dụng cho nhiều ứng dụng khác như tự động hóa các tác vụ quản trị dựa trên web, tương tác với các nền tảng không cung cấp Api, cũng như để thu thập thông tin web (web crawling). Tại sao chúng ta cần Selenium?
Cài đặt project Selenium PythonTrong bài này chúng ta sẽ sử dụng Python 3.x để thực hiện. Sau khi máy tính đã có Python chúc ta sẽ tiếp tục cài đặt các thành phần khác: Cài đặt virtual environmentVirtual environment là môi trường ảo để cài đặt Selenium Python bên trong, dùng commandline cd vào thư mục mà bạn muốn dùng làm project và chạy các dòng lệnh sau:
Cài đặt Chrome DriveKhởi chạy phiên bản Chrome đầu tiênTạo file bot.py trong thư mục selenium_python và bắt đầu code Import các packages:
Thêm 1 số option cho chrome như kích thước windows, chế độ ẩn danh, ...
Khởi tạo đối tượng
đường_dẫn_đến_file_chrome_driver bạn thay bằng đường dẫn đén file drive download ở bước trên, vd: "/Users/tuantai/Downloads/chromedriver" Ok bây giờ có thể chạy thử bot này bằng lệnh: Tạo request đầu tiên của bạnTrong ví dụ này, chúng ta sẽ sử dụng Selenium để lấy tiêu đề tin tức trên Hacker News. Bạn có thể thử lại bằng:
Đợi response từ trangBản chất Javascript là không đồng bộ, vì vậy một số phần tử có thể không được tải đầy đủ và hiển thị ngay lập tức. Trong thực tế, nên thêm một số thời gian trễ trước khi nhận được phản hồi. Thay dòng code trên bằng
Trong trường hợp này (time.sleep), chúng ta tạm dừng 3 giây trước khi phân tích dữ liệu. Nhiều kỹ thuật đợi respon phức tạp hơn sau này bạn có thể tìm với WebDriverWait Tương tác với dữ liệuSelenium cung cấp một số cách để truy cập các phần tử trên trang (https://selenium-python.readthedocs.io/locating-elements.html). Các phương pháp thường được sử dụng là:
Quay về ví dụ đang làm trong bài này, ta lấy các phần tử theo css selector
Selenium trả về các đối tượng mà sau đó bạn có thể truy vấn. Ví dụ, nếu bạn muốn nhận:
Vì vậy, nếu chúng ta muốn lấy tiêu đề văn bản và url của các bài viết bằng Selenium:
Tương tự nếu bạn muốn lấy score và domain của từng bài viết:
Tổng kết nội dung của bot đầu tiên
Như vậy bạn đã biết cách lấy thông tin cụ thể trên một trang web bằng Selenium. Selenium cũng cung cấp các điều khiển nâng cao hơn như nhấp chuột, chèn dữ liệu vào input ... cực kỳ mạnh mẽ khi thu thập dữ liệu các trang web phức tạp hơn. Sau đây là 1 số ví dụ nâng cao để các điểm nổi bật Selenium có thể làm được: Thực thi JavascriptClick button
Cuộn chuột
Truy cập vào các link trên trang
Tối ưu lưu lượng tảiVô hiệu hóa hiển thị hình ảnh
Tạo cache
Chạy ngầm (không hiển thị UI trình duyệt)
Chụp ảnh màn hình
Tải ảnh
Thực thi chuỗi hành động
Truy cập với proxies
Cuộn chuột trong 1 thẻ Select
Còn rất nhiều điều Selenium có thể làm được bạn có thể tham khảo ở các link tài liệu
sau: Nguồn: https://trinhtuantai.com/huong-dan-lay-du-lieu-web-web-crawling-voi-selenium-python-webdrive.html |