Cách thu thập dữ liệu từ trang web JavaScript bằng Python

Cách thực hiện , Python , Scraping ,15-11-20225 phút đọc

Trình duyệt web sử dụng Javascript để tạo ra trải nghiệm động và tương tác cho người dùng. Phần lớn các ứng dụng và chức năng khiến Internet trở nên không thể thiếu đối với cuộc sống hiện đại đều được mã hóa dưới dạng Javascript. Xem xét các phiên bản đầu tiên của Javascript, các trang web là tĩnh và cung cấp một chút tương tác với người dùng ngoài việc nhấp vào liên kết

Mục lục

Trình duyệt web sử dụng Javascript để tạo ra trải nghiệm động và tương tác cho người dùng. Phần lớn các ứng dụng và chức năng khiến Internet trở nên không thể thiếu đối với cuộc sống hiện đại đều được mã hóa dưới dạng Javascript. Xem xét các phiên bản đầu tiên của Javascript, các trang web là tĩnh và cung cấp một chút tương tác với người dùng ngoài việc nhấp vào liên kết và tải các trang mới. 

Sau đây là một số cải tiến động của trang web được thực hiện bằng Javascript.

  • Xác thực đầu vào từ biểu mẫu web
  • Hoạt ảnh của các thành phần trang như thay đổi kích thước, di chuyển và mờ dần
  • Đang tải dữ liệu mới mà không cần tải lại trang
  • Phát âm thanh và video
  • Sửa chữa các vấn đề tương thích của trình duyệt

Bạn có thể sử dụng scraping để thu thập dữ liệu có cấu trúc từ các trang web theo cách tự động. Web scraping còn được gọi là trích xuất dữ liệu web. Một số trường hợp sử dụng chính của web scraping là:

  • Theo dõi tin tức
  • Thông tin giá cả
  • Tạo khách hàng tiềm năng
  • Theo dõi giá
  • Nghiên cứu thị trường

Trước tiên chúng ta hãy tìm hiểu nhu cầu thu thập dữ liệu trang web.

Tại sao bạn cần phải thu thập dữ liệu từ một trang web Javascript?

Các doanh nghiệp sử dụng web scraping để tận dụng lượng lớn dữ liệu công khai có sẵn để đưa ra quyết định thông minh hơn. Dưới đây là một số lĩnh vực mà web scraping được sử dụng.

  • Thương mại điện tử
  • Phương tiện truyền thông xã hội
  • Ngân hàng 
  • Tài chính
  • Tiếp thị 
  • Bất động sản
  • Tài chính
  • Tối ưu hóa công cụ tìm kiếm
  • Dẫn đầu bán hàng

Sau đây là những lý do tại sao các công ty cần phải thu thập dữ liệu từ các trang web.

Tự động hóa – Không thể sao chép và dán từng thông tin từ một trang web. Các công ty sử dụng phần mềm thu thập dữ liệu để tự động hóa hầu hết các quy trình liên quan của họ.

Quản lý dữ liệu – Bạn không thể sử dụng cơ sở dữ liệu và bảng tính để quản lý số và hình trên trang web được định cấu hình bằng HTML. Vì vậy, các công ty sử dụng công cụ trích xuất dữ liệu web để quản lý dữ liệu của họ.

Danh sách bất động sản – Các đại lý bất động sản sử dụng công cụ thu thập dữ liệu web để điền vào cơ sở dữ liệu về các bất động sản cho thuê hoặc bán. 

Dữ liệu so sánh trang web mua sắm – Các công ty sử dụng công cụ thu thập dữ liệu web để thu thập dữ liệu giá cả và sản phẩm từ mỗi nhà bán lẻ, để họ có thể cung cấp cho người dùng dữ liệu so sánh mà họ mong muốn. 

Thống kê và thông tin chuyên sâu về ngành – Các công ty sử dụng scraping để xây dựng cơ sở dữ liệu lớn và rút ra thông tin chuyên sâu về ngành từ những cơ sở dữ liệu này. Ví dụ, một công ty có thể scraping và phân tích hàng tấn dữ liệu về giá dầu. Sau đó, công ty có thể bán thông tin chuyên sâu của mình cho các công ty dầu mỏ trên toàn thế giới.

Quét một trang web Javascript bằng Python

Hãy cùng xem bạn có thể sử dụng Selenium để thu thập dữ liệu từ các trang web Javascript như thế nào.

Cài đặt thư viện Selenium

Bạn có thể cài đặt Selenium bằng lệnh sau.

pip cài đặt selenium

Cài đặt trình điều khiển Web

Bạn có biết Selenium mô phỏng một trình duyệt thực tế không? Nó không sử dụng cài đặt Chrome của bạn, thay vào đó nó sử dụng trình điều khiển để chạy trình duyệt. Trình điều khiển web Selenium tham chiếu đến cả liên kết ngôn ngữ và triển khai của từng trình duyệt kiểm soát mã. Bạn phải tải xuống trình điều khiển web và có thể thêm nó vào biến môi trường path. Chúng ta sẽ sử dụng trình điều khiển web Firefox và bạn có thể cài đặt nó bằng cách làm theo liên kết này .

Ví dụ

Chúng ta hãy xem xét một ví dụ selenium đơn giản liên quan đến việc thu thập tiêu đề trang web. Đối với ví dụ này, trước tiên chúng ta sẽ nhập webdriver từ selenium vào tệp python như được hiển thị bên dưới:

từ selenium nhập webdriver

Chúng ta phải đề cập đến đường dẫn nơi trình điều khiển web nằm. Sau đó, chúng ta phải khởi tạo trình điều khiển web Firefox.

WEBDRIVER_PATH = './' trình điều khiển = webdriver.Firefox(WEBDRIVER_PATH)

Bây giờ chúng ta xác định URL để lấy tiêu đề của trang web.

URL = 'https://www.google.com' trình điều khiển. lấy (URL) in (trình điều khiển.title)

Chạy đoạn mã trên sẽ mở một cửa sổ firefox in ra bảng điều khiển tiêu đề của trang web. Chúng tôi đã định nghĩa URL của Google làm ví dụ trong trường hợp này, vì vậy kết quả sẽ như thế này:

Đây là trang google từ trình điều khiển web firefox. Tiêu đề được in trên bảng điều khiển sẽ như sau:

Chúng ta phải đóng thủ công cửa sổ firefox đã mở. Chúng ta sẽ thêm driver.quit() vào cuối mã của mình để cửa sổ sẽ tự động đóng sau khi công việc hoàn tất. 

từ selenium nhập webdriver WEBDRIVER_PATH = './' driver = webdriver.Firefox(WEBDRIVER_PATH) URL = 'https://www.google.com' driver.get (URL) print (driver.title) driver.quit()

Trong trường hợp bạn muốn thu thập dữ liệu từ một trang web động, bạn có thể làm theo các bước tương tự được đề cập ở trên. Ví dụ, nếu bạn muốn lấy tiêu đề Youtube , bạn có thể sử dụng mã bên dưới.

từ selenium nhập webdriver WEBDRIVER_PATH = './' driver = webdriver.Firefox(WEBDRIVER_PATH) URL = 'https://www.youtube.com' driver.get (URL) in (driver.title) driver.quit()

Chúng ta hãy thử một điều mới ở đây. Chúng ta có thể chỉnh sửa hộp tìm kiếm và điền vào đó từ “Selenium” bằng cách sử dụng lớp “Keys” như được hiển thị bên dưới.

từ selenium .webdriver .common .keys nhập Keys

Sau khi khởi tạo trình điều khiển web Firefox và lấy được tiêu đề Youtube, chúng ta tạo một đối tượng chứa hộp tìm kiếm với xpath.

hộp tìm kiếm = trình điều khiển.tìm_kiếm_phần_tử_theo_xpath( '//đầu_vào[@id="tìm_kiếm"]' )

Sau đó, chúng tôi chỉnh sửa nội dung của hộp tìm kiếm và điền vào đó từ “Selenium”.

hộp tìm kiếm .send_keys ( 'Selenium' )

Sau khi điền nội dung mong muốn vào ô tìm kiếm, chúng ta có thể nhấn “Enter” để kích hoạt tìm kiếm.

hộp tìm kiếm.gửi_khóa ( Phím.ENTER )

Bạn có thể thấy trong hình ảnh bên dưới rằng hộp tìm kiếm của Youtube có chứa từ “Selenium”.

Sử dụng Proxy

Proxy được yêu cầu khi bạn cần nội dung web được bản địa hóa. Proxy cũng được yêu cầu khi bạn gửi quá nhiều yêu cầu đến một trang web trong thời gian ngắn. Bạn cần proxy cho Selenium khi cần kiểm tra tự động. Tuy nhiên, để sử dụng proxy Selenium để thu thập dữ liệu trang web Javascript, bạn cần sử dụng dây Selenium mở rộng các ràng buộc của Selenium và cấp quyền truy cập vào các yêu cầu cơ bản do trình duyệt thực hiện.

Để sử dụng Selenium với proxy, sau đây là gói bạn cần cài đặt.

từ selenium wire nhập webdriver

Sau khi cài đặt thư viện Python selenium-wire, bạn cần lưu ý những điều sau:

  • proxy_tên_người_dùng
  • mật khẩu proxy
  • proxy_url
  • cổng proxy

Ở đây chúng tôi đề cập đến một số cổng ngẫu nhiên 8080 làm ví dụ. Bạn có thể thiết lập tên người dùng, mật khẩu và URL của trang web mong muốn theo lựa chọn của riêng bạn.

proxy_username = "USER_NAME"
proxy_password = "PASSWORD"
proxy_url = "Any Website URL"
proxy_port = 8080

options = {
    "proxy": {
        "http": f"http://{proxy_username}:{proxy_password}@{proxy_url}:{proxy_port}",
        "verify_ssl": False,
    },
}

Đối với trình điều khiển web Selenium, proxy dân dụng là lựa chọn tốt nhất. Bởi vì chúng không dễ bị phát hiện như proxy trung tâm dữ liệu . Chúng định tuyến các yêu cầu của khách hàng thông qua IP dân dụng và được tin cậy hơn IP trung tâm dữ liệu. Chúng cũng hữu ích khi truy cập các trang web phức tạp sử dụng Javascript như Youtube, Google, Instagram, v.v.

Tại sao nên sử dụng Proxy để thu thập dữ liệu từ trang web JS

Bạn cần sử dụng proxy để thu thập dữ liệu từ một trang web vì những lý do sau:

  • Proxy được sử dụng để cải thiện bảo mật và cân bằng lưu lượng truy cập internet của một trang web.
  • Những kẻ thu thập dữ liệu web cần sử dụng proxy để ẩn danh tính và làm cho lưu lượng truy cập của chúng trông giống như lưu lượng truy cập của người dùng thông thường.
  • Các proxy cũng được sử dụng để bảo vệ dữ liệu cá nhân của người dùng web.
  • Proxy giúp truy cập vào các trang web bị chặn bởi cơ chế kiểm duyệt của quốc gia.
  • Bạn có thể thu thập dữ liệu trang web bằng proxy một cách đáng tin cậy. 
  • Proxy rất có giá trị khi bạn cần thu thập dữ liệu sản phẩm từ các nhà bán lẻ trực tuyến. Bởi vì chúng cho phép bạn thực hiện yêu cầu từ một khu vực địa lý cụ thể và bạn có thể truy cập vào nội dung cụ thể mà trang web hiển thị cho vị trí đó.
  • Proxy giúp bạn thực hiện số lượng lớn yêu cầu đến trang web mục tiêu mà không bị cấm.
  • Bạn có thể sử dụng proxy để tạo kết nối đồng thời không giới hạn đến cùng một trang web hoặc nhiều trang web khác nhau.

Phần kết luận

Việc trích xuất dữ liệu web rất quan trọng vì bạn có thể sử dụng nó cho:

  • Quét quảng cáo sản phẩm/dịch vụ và đưa ra thông tin chi tiết về ngân sách của họ
  • Dự đoán xu hướng thời trang để duy trì khả năng cạnh tranh
  • Thu thập thông tin từ các kênh truyền thông xã hội và khám phá khách hàng tiềm năng, v.v.

Tiếp theo, chúng tôi đã thảo luận về cách bạn có thể sử dụng Selenium để thu thập các trang web có tính năng Javascript trong Python. Bạn có thể thu thập nội dung của các trang web tĩnh cũng như các trang web động như Youtube. Bạn cũng cần sử dụng proxy Selenium để kiểm tra tự động. Các proxy tốt nhất mà bạn có thể sử dụng là proxy dân dụng vì chúng cực kỳ nhanh và không dễ bị phát hiện như các proxy khác.

Hy vọng bạn đã hiểu được cách thu thập dữ liệu trang web Javascript bằng Python.