Làm cách nào để xóa bảng từ trang web bằng JavaScript?

Trong một bài đăng gần đây, Matt đã thảo luận về cách trích xuất dữ liệu từ các trang web phức tạp bằng Power BI bằng khả năng Suy luận bảng web mới của Power Query. Bài viết này là phần mở rộng của những ý tưởng đó, tiết lộ rằng tính năng tuyệt vời này không chỉ giới hạn trong việc thu thập dữ liệu từ các trang web HTML tĩnh mà còn có thể được sử dụng để thu thập dữ liệu từ các trang web động tiết lộ dữ liệu được lập bảng thông qua một phiên bản JavaScript. Tuy nhiên, hiện tại có một số hạn chế, vì vậy hãy đọc tiếp để tìm hiểu thêm

Trích xuất dữ liệu trang web

Như đã thảo luận trong bài viết trước, trước khi phát triển tính năng New Web Table Inference trong Power BI, việc trích xuất dữ liệu dạng bảng từ các trang web chỉ hoạt động tốt khi trang có bảng HTML bên dưới trình bày dữ liệu. Nhưng với tính năng Web Table Inference mới trong hộp công cụ của bạn, Power Query sẽ phân tích mã cơ bản trong trang được kết xuất của trang web mục tiêu để tìm ra dữ liệu nào cần trích xuất. Tại thời điểm viết bài này, tính năng New Web Table Inference vẫn đang được phát triển và do đó không hoạt động cho tất cả các trang web và đôi khi cần một chút xoa bóp, nhưng tiềm năng của tính năng này rất thú vị

Để kích hoạt tính năng này, hãy đi tới Tệp\Tùy chọn và Cài đặt\Tùy chọn\Tính năng xem trước và bật Suy luận bảng web mới

Cạo dữ liệu động

Hãy để tôi chỉ cho bạn cách sử dụng tính năng mới này để trích xuất dữ liệu từ một phiên bản JavaScript trong trang JavaScript trên một trang web

Dữ liệu tôi muốn trích xuất là thông tin chi tiết về 500 Công ty trong danh sách Fortune, được liệt kê bởi Fortune. com

Bằng cách kiểm tra mã nguồn của trang web, rõ ràng là dữ liệu được lập bảng hiển thị cho người xem được tạo thông qua một phiên bản JavaScript và không tồn tại dưới dạng một mục tĩnh trên trang. Trong trường hợp này, trang web tạo ra 10 hàng đầu tiên của danh sách Fortune 500

Làm cách nào để xóa bảng từ trang web bằng JavaScript?

 

Trước khi bật suy luận bảng web mới

Nếu tôi cố gắng trích xuất danh sách mà không sử dụng tính năng xem trước mới, Power Query sẽ chỉ hiển thị một bảng được lấy từ chân trang

Làm cách nào để xóa bảng từ trang web bằng JavaScript?

Làm cách nào để xóa bảng từ trang web bằng JavaScript?

Lưu ý cách Power Query không thể xác định cấu trúc dạng bảng của nội dung cốt lõi của trang và thay vào đó cung cấp một đối tượng duy nhất (Bảng 1) tiết lộ dữ liệu từ bảng Phần của nội dung chân trang. Phương pháp thu thập tiêu chuẩn này không đủ để lấy dữ liệu từ một trang web phức tạp như vậy và do đó chúng tôi cần sử dụng tính năng xem trước mới

Sức mạnh của suy luận bảng web mới

Khi bật tính năng mới, có 2 đối tượng bảng mà Power Query đã phát hiện. Mặc dù Bảng 1 trông rất giống với nội dung của bảng động mà tôi đang cố gắng thu thập, nhưng nó thiếu một số cột, vì vậy tôi cần triển khai nút “Thêm bảng bằng ví dụ” để đào tạo Power Query chính xác những gì tôi đang nhắm mục tiêu

Làm cách nào để xóa bảng từ trang web bằng JavaScript?

 

GHI CHÚ. Nếu bạn đang thử điều này ở nhà và chỉ thấy một bảng (Dữ liệu phần) được trình bày ngay cả sau khi tính năng Suy luận bảng web mới được bật, chỉ cần đóng trình hướng dẫn Lấy dữ liệu và cố gắng kết nối lại với nguồn dữ liệu web. Ngoài ra, hãy thử điều chỉnh url để kết nối qua http. // thay vì https. //. Chúng tôi đang đẩy các khả năng của tính năng mới này đến giới hạn bằng cách yêu cầu tính năng này quét một trang web phức tạp như vậy và vì tính năng này vẫn đang được phát triển nên không phải lúc nào nó cũng hoạt động hoàn hảo

Huấn luyện truy vấn

Bằng cách nhấp vào  “Thêm bảng bằng ví dụ”, Power Query cho phép bạn tạo bảng của riêng mình bằng cách hiển thị cho bảng những gì bạn muốn bảng hiển thị. Trong trường hợp này, tôi đang nhắm mục tiêu vào bảng hoàn chỉnh, nhưng cách tốt nhất là chỉ cạo dữ liệu bạn cần

Sau khi nhấp vào nút, bạn sẽ thấy một màn hình chia nhỏ. Ở trên cùng là phiên bản tương tác của trang web của trang web mục tiêu của bạn và ở dưới cùng sẽ là một bảng tính trống. Khi bạn bắt đầu điền vào dữ liệu bảng tính, Intellisense sẽ giúp bạn chọn các trường hợp lệ, hiển thị danh sách các giá trị có thể. Khi bạn làm việc với bảng tính, Power Query sẽ tìm hiểu giá trị nào trong trang web có liên quan đến bảng và khi bạn hoàn thành giá trị hàng thứ hai, Power Query sẽ có thể nhận dạng mẫu dữ liệu web và tự động điền vào . Sau đó, chỉ cần nhấp vào “OK” và tải dữ liệu vào Power BI

Làm cách nào để xóa bảng từ trang web bằng JavaScript?

GHI CHÚ. Mặc dù tính năng New Web Table Inference có khả năng tuyệt vời để thu thập dữ liệu từ các trang web phức tạp này, nhưng một hạn chế hiện đang tồn tại với công nghệ này là nó chỉ có khả năng thu thập dữ liệu từ những gì được hiển thị trên phiên bản trang web mặc định. Vì vậy, trong ví dụ này, ngay cả khi bạn đã nhấp và mở rộng tập dữ liệu thành 100 hàng, công cụ Power Query vẫn sẽ chỉ phát hiện 10 hàng đầu tiên.

Làm cách nào để xóa bảng từ trang web bằng JavaScript?

Làm mới truy vấn của bạn trong Power BI

Cuối cùng, trong trường hợp Power BI đã tải các bảng trống sau khi hoàn thành thủ thuật Lấy dữ liệu. Chỉ cần làm mới truy vấn của bạn để quét lại trang

Làm cách nào để cạo một bảng từ trang web JavaScript?

Tìm kiếm web bằng JavaScript và nút. .
Chuẩn bị tệp của chúng tôi. .
Kiểm tra trang đích bằng DevTools. .
Gửi yêu cầu HTTP của chúng tôi và phân tích cú pháp HTML thô. .
Lặp qua các hàng của bảng HTML. .
Đẩy dữ liệu đã cạo vào một mảng trống. .
Gửi dữ liệu đã cạo vào tệp CSV. .
Trình quét bảng HTML [Mã đầy đủ]

Bạn có thể sử dụng JavaScript để quét web không?

Dò web bằng JavaScript là một kỹ thuật rất hữu ích để trích xuất dữ liệu từ Internet để trình bày hoặc phân tích .

Làm thế nào để cạo một bảng từ một trang web Selenium?

Bước 1. Tạo một phiên và tải trang. Bước đầu tiên chúng ta cần làm là tạo một phiên trình điều khiển web, phiên Chrome mới chẳng hạn. .
Bước 2. Phân tích cú pháp mã HTML và lấy bảng với Beautiful Soup. .
Bước 3. Đọc bảng với Pandas read_html()