Cách cạo trang web JavaScript bằng Python

Làm thế nào để, Python, Cạo, Nov-15-20225 phút đọc

Các trình duyệt web sử dụng Javascript để tạo ra trải nghiệm năng độ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 làm cho Internet không thể thiếu trong cuộc sống hiện đại được mã hóa dưới dạng Javascript. Xem xét những hiện thân ban đầu của Javascript, các trang web là tĩnh và cung cấp một chút tương tác của người dùng ngoài việc nhấp vào liên kết

Mục lục

Các trình duyệt web sử dụng Javascript để tạo ra trải nghiệm năng độ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 làm cho Internet không thể thiếu trong cuộc sống hiện đại được mã hóa dưới dạng Javascript. Xem xét các hóa thân ban đầu của Javascript, các trang web là tĩnh và cung cấp một chút tương tác 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 trang web động được thực hiện bởi Javascript.

  • Xác thực đầu vào từ biểu mẫu web
  • Hoạt ảnh của các yếu tố trang như thay đổi kích thước, di chuyển và làm mờ dần
  • 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à:

  • Giám sát tin tức
  • Thông tin về giá
  • Tạo khách hàng tiềm năng
  • Giám sát giá
  • Nghiên cứu thị trường

Trước tiên chúng ta hãy hiểu sự cần thiết phải cạo các trang web.

Tại sao bạn cần phải Scrape một trang web Javascript?

Các doanh nghiệp sử dụng quét web để sử dụng lượng lớn dữ liệu có sẵn công khai để đư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ử
  • Truyền thông xã hội
  • Ngân hàng 
  • Tài chính
  • Marketing 
  • Bất động sản
  • Tài chính
  • Tối ưu hóa công cụ tìm kiếm
  • Khách hàng tiềm năng

Sau đây là những lý do mà các công ty cần phải cạo các trang web.

Tự động hóa - Không thể sao chép và dán từng phần thông tin từ một trang web. Các công ty sử dụng phần mềm cạo để 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ý chữ số và số liệu 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ác công cụ quét 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 quét web để điền vào cơ sở dữ liệu của họ về các tài sản có 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 quét 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à hiểu biết về ngành - Các công ty sử dụng scraping để xây dựng cơ sở dữ liệu khổng lồ và rút ra những hiểu biết cụ thể về ngành từ những điều này. Ví dụ, một công ty có thể thu thập và phân tích hàng tấn dữ liệu về giá dầu. Sau đó, nó có thể bán những hiểu biết của họ cho các công ty dầu mỏ trên toàn thế giới.

Scraping một trang web Javascript bằng Python

Hãy xem cách bạn có thể sử dụng Selenium để quét các trang web Javascript.

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

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

pip cài đặt selen

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 đề cập đến cả ràng buộc ngôn ngữ và triển khai mã điều khiển trình duyệt riêng lẻ. 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 đường dẫn. Chúng tôi 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 theo liên kết này .

Ví dụ

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

từ webdriver nhập khẩu selen

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

WEBDRIVER_PATH = './'
driver = 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'
người lái. get(URL)
In (driver.title)

Chạy đoạn mã trên sẽ mở ra một cửa sổ firefox in vào bảng điều khiển tiêu đề của trang web. Chúng tôi đã xác định 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ẽ là:

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

từ webdriver nhập khẩu selen 

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

URL = 'https://www.google.com'
người lái. get(URL)
In (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 truy xuất tiêu đề Youtube , bạn có thể sử dụng mã dưới đây.

từ webdriver nhập khẩu selen 
 
WEBDRIVER_PATH = './' 
Trình điều khiển = Webdriver. Firefox(WEBDRIVER_PATH) 
URL = 'https://www.youtube.com'
người lái. get(URL)
In (driver.title)
driver.quit()

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

từ selenium.webdriver.common.keys nhập khóa

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

search_box = driver.find_element_by_xpath('//input[@id="search"]')

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 nó bằng từ "Selenium".

search_box.send_keys('Selen')

Khi chúng tôi điền vào hộp tìm kiếm với nội dung mong muốn của mình, chúng tôi có thể nhấn "Enter" để làm cho tìm kiếm hoạt động.

search_box.send_keys (Phím.VÀO)

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

Sử dụng proxy

Các proxy được yêu cầu khi bạn cần một nội dung web được bản địa hóa. Chúng 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 một khoảng 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 để quét 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ừ webdriver nhập dây selenium

Sau khi cài đặt thư viện dây selen Python, bạn cần đề cập đến những điều sau:

  • proxy_username
  • proxy_password
  • proxy_url
  • proxy_port

Ở đâ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ể đặt 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. Đó là bởi vì chúng không dễ bị phát hiện không giống như proxy trung tâm dữ liệu . Họ định tuyến các yêu cầu của khách hàng thông qua các IP dân cư và kiếm được nhiều sự tin tưởng hơn so với các IP trung tâm dữ liệu. Chúng cũng hữu ích trong việc 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 để cạo trang web JS

Bạn cần sử dụng proxy để cạo 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.
  • Các trình quét web cần sử dụng proxy để ẩn danh tính của họ và làm cho lưu lượng truy cập của họ 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 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 các trang web bằng proxy một cách đáng tin cậy. 
  • Proxy 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. Đó là bởi vì chúng cho phép bạn thực hiện yêu cầu của mình từ một khu vực địa lý cụ thể và bạn có thể truy cập nội dung cụ thể mà trang web hiển thị cho vị trí đó.
  • Proxy giúp bạn thực hiện một số lượng lớn các 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ác trang web giống nhau hoặc khác nhau.

Kết thúc

Web scraping rất quan trọng vì bạn có thể sử dụng nó cho:

  • Thu thập quảng cáo sản phẩm/dịch vụ và cung cấp 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ì tính cạnh tranh
  • Cạo 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.

Hơn nữa, chúng tôi đã thảo luận về cách bạn có thể sử dụng Selenium để cạo các trang web nổi bật của Javascript bằng Python. Bạn có thể cạo 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 bạn có thể sử dụng là proxy dân dụng vì chúng siêu nhanh và không thể dễ dàng phát hiện không giống như các proxy khác.

Hy vọng bạn đã hiểu về cách cạo một trang web Javascript bằng Python.