Phân tích cú pháp DOM, Bộ chọn truy vấn và JavaScript với AngleSharp – phân tích cú pháp dom trong javascript

Chúng tôi sử dụng AngleSharp để điều tra HTML, sử dụng bộ chọn truy vấn để tìm các phần tử DOM và thực thi JavaScript, tất cả đều từ .NET và C #. Mẫu mã bao gồm.

Bạn đang xem : phân tích cú pháp dom trong javascript

Gần đây, tôi đã thấy một tweet từ Chris Heilmann, Giám đốc Chương trình Chính về Công cụ Trình duyệt tại Microsoft. Trong dòng tweet này, anh ấy đã đưa ra một mẹo nhanh về cách phân tích cú pháp nội dung HTML bằng cách sử dụng lớp JavaScript DOMParser tích hợp sẵn thay vì dùng đến RegEx và những trường hợp đau lòng không thể tránh khỏi và HTML không đúng định dạng có thể mang lại.

Đoạn tweet khiến tôi nghĩ về những lợi thế mà các trình duyệt hiện đại có được khi phân tích cú pháp nội dung HTML qua giải pháp cuộn tại nhà tùy chỉnh, đặc biệt là khi làm việc trong .NET. Mô hình đối tượng tài liệu (DOM) rất cần thiết để phát triển web phía máy khách và đối với tất cả các ý định và mục đích, chỉ giới hạn trong miền đó.

Điều gì sẽ xảy ra nếu chúng tôi có thể tận dụng sức mạnh của DOM trong .NET và sử dụng chức năng bộ chọn truy vấn để phân tích cú pháp và truy xuất thông tin từ nội dung HTML?

Chúng tôi có thể tạo ra một trình duyệt và các thông báo proxy, nhưng thật khó để thực hiện trong .NET; tin tôi đi, tôi đã cố gắng. Nhưng chúng ta có thể làm điều gì đó tương tự bằng cách sử dụng thư viện . NET Foundation có tên là AngleSharp .

AngleSharp là một thư viện .NET cung cấp cho bạn khả năng phân tích cú pháp các siêu văn bản dựa trên dấu ngoặc nhọn như HTML, SVG và MathML. Thư viện cũng hỗ trợ XML mà không cần xác thực. Một khía cạnh quan trọng của AngleSharp là nó có thể phân tích cú pháp CSS. AngleSharp bao gồm một trình phân tích cú pháp được xây dựng dựa trên đặc tả W3C chính thức, tạo ra một bản trình bày HTML5 DOM hoàn toàn di động của mã nguồn đã cho và đảm bảo khả năng tương thích với các kết quả trong các trình duyệt thường xanh. Ngoài ra, các tính năng DOM tiêu chuẩn như querySelector hoặc querySelectorAll đều hoạt động cho việc duyệt cây.

AngleSharp cũng chạy trên nhiều nền tảng, bao gồm .NET Core, .NET Framework, Xamarin, UWP, macOS và hơn thế nữa.

Trong trường hợp sử dụng được nêu ở trên, chúng tôi sẽ sử dụng AngleSharp để tải một số nội dung HTML và xác định giá trị của thẻ HTML bằng cú pháp công cụ chọn truy vấn và cách tiếp cận thứ hai bằng JavaScript.

Để bắt đầu, hãy cài đặt gói AngleSharp.Js trong một ứng dụng Console đơn giản, sẽ bao gồm các gói AngleSharp cốt lõi.

  

& gt;

dotnet bảng điều khiển mới

- o

Mẫu

& gt;

cd

Mẫu

& gt;

dotnet thêm gói AngleSharp.Js

Tiếp theo, chúng tôi sẽ cần một số nội dung HTML. Đối với mẫu này, hãy tải một tài liệu HTML đơn giản.

  const string basic = @ "

& lt;! DOCTYPE html & gt;

& lt; html & gt;

& lt; body & gt;

& lt; h1 & gt;

Tiêu đề Đầu tiên của Tôi

& lt; / h1 & gt;

& lt; p & gt;

Đoạn đầu tiên của tôi.

& lt; / p & gt;

& lt; / body & gt;

& lt; / html & gt;

";

Sau đó, chúng tôi sẽ cần tạo BrowsingContext . Lớp này sẽ cho phép chúng tôi tải HTML của mình vào một đối tượng C # mà chúng tôi có thể kiểm tra bằng cách sử dụng bộ chọn truy vấn.

  

var

config

=

Cấu hình

.

Mặc định

.

WithJs

();

var

context

=

BrowsingContext

.

Mới

(

cấu hình

);

var

tài liệu

=

đang chờ đợi

context

.

OpenAsync

(

yêu cầu

= & gt;

yêu cầu

.

Nội dung

(

cơ bản

));

Nỗ lực đầu tiên của chúng tôi để đọc thông tin từ nội dung HTML đã tải của chúng tôi sẽ được thực hiện bằng giao diện bộ chọn truy vấn C # tích hợp sẵn. Hãy tìm tất cả các thẻ h1 .

  

var

tiêu đề

=

tài liệu

.

QuerySelectorAll

(

"h1"

)

.

Chọn

(

x

= & gt;

x

.

InnerHtml

)

.

Đầu tiên

();

Bảng điều khiển

.

WriteLine

(

tiêu đề

);

Thực thi ứng dụng của mình, chúng tôi nhận được kết quả của Tiêu đề đầu tiên của tôi . Bây giờ, hãy sử dụng JavaScript để truy xuất cùng một giá trị.

  

var

script

=

document

.

ExecuteScript

(

"document.querySelectorAll ('h1') [0] .innerHTML"

);

Bảng điều khiển

.

WriteLine

(

script

);

Như mong đợi, chúng tôi nhận được kết quả tương tự như chúng tôi đã làm trước đây. Hãy xem toàn bộ giải pháp (sử dụng các câu lệnh cấp cao nhất).

  

sử dụng

Hệ thống

;

sử dụng

System.Linq

;

sử dụng

AngleSharp

;

sử dụng

AngleSharp.Js

;

const

string

cơ bản

=

@ " & lt;! DOCTYPE html & gt; & lt; html & gt; & lt; body & gt; & lt; h1 & gt; Tiêu đề Đầu tiên của Tôi & lt; / h1 & gt; & lt; p & gt; Đoạn đầu tiên của tôi. & lt; / p & gt; & lt; / body & gt; & lt; / html & gt; "

;

var

cấu hình

=

Cấu hình

.

Mặc định

.

VớiJs

();

var

context

=

BrowsingContext

.

Mới

(

cấu hình

);

var

tài liệu

=

đang chờ đợi

context

.

OpenAsync

(

yêu cầu

= & gt;

yêu cầu

.

Nội dung

(

cơ bản

));

var

tiêu đề

=

tài liệu

.

QuerySelectorAll

(

"h1"

)

.

Chọn

(

x

= & gt;

x

.

InnerHtml

)

.

Đầu tiên

();

Bảng điều khiển

.

WriteLine

(

tiêu đề

);

var

script

=

document

.

ExecuteScript

(

"document.querySelectorAll ('h1') [0] .innerHTML"

);

Bảng điều khiển

.

WriteLine

(

script

);

Kết luận

AngleSharp là trình phân tích cú pháp tuân thủ W3C cung cấp cho các nhà phát triển C # quyền truy cập vào các công cụ tương tự mà các nhà phát triển JavaScript phía máy khách yêu thích. Trong bài đăng này, chúng tôi đã thấy nhiều cách tiếp cận đối với nội dung HTML cắt nhỏ để có được dữ liệu chúng tôi cần. Biểu thức chính quy có thể giải quyết nhiều vấn đề, nhưng phân tích cú pháp HTML (đặc biệt là HTML bị xáo trộn) có thể là một rào cản nghiêm trọng để đạt được mục tiêu của chúng tôi. Theo ý kiến ​​của tôi, thư viện này là một cách tiếp cận tốt hơn cho những người đang tìm cách giải quyết các vấn đề dựa trên đánh dấu.

Tôi hy vọng bạn thấy bài đăng này hữu ích trong hành trình phân tích cú pháp HTML của bạn và tôi muốn cảm ơn Maarten Balliauw vì đã chia sẻ thư viện này với tôi .


Xem thêm những thông tin liên quan đến chủ đề phân tích cú pháp dom trong javascript

JavaScript Tutorial – “DOMContentLoaded” event | When is it safe to interact with the DOM?

  • Tác giả: dcode
  • Ngày đăng: 2018-08-30
  • Đánh giá: 4 ⭐ ( 9362 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: By using the “DOMContentLoaded” within JavaScript, you are able to react to when the browser has finished loading (or parsing) the document. Once this event fires off, it’s considered safe to then interact with the DOM (i.e. retrieving or changing elements).

    In this video we take a look at what happens when we don’t use this event and how we can fix that problem with this event, “DOMContentLoaded”.

    Support me on Patreon:
    https://www.patreon.com/dcode – with enough funding I plan to develop a website of some sort with a new developer experience!

    For your reference, check this out:
    https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded

    Follow me on Twitter @dcode!

    If this video helped you out and you’d like to see more, make sure to leave a like and subscribe to dcode!

Làm cách nào để phân tích cú pháp một trang HTML với Node.js

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 8541 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Bạn có thể sử dụng NPM module jsdom và HTMLParser để tạo ra và phân tích…

Giải pháp hiệu quả để tải các tập tin JavaScript của bên thứ ba

  • Tác giả: sharekynang.com
  • Đánh giá: 4 ⭐ ( 9711 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Nếu một đoạn script từ bên thứ ba đang làm chậm website của bạn, bạn có thể chọn một trong hai giải pháp sau để cải thiện hiệu suất Bỏ đoạn script đi nếu chức năng của nó không thêm bất kì giá trị nào cho website của bạn Tối ưu quá trình tải Trong

innerHTML trong JavaScript và cách lấy hoặc thiết lập câu lệnh HTML chứa trong một Element

  • Tác giả: laptrinhcanban.com
  • Đánh giá: 5 ⭐ ( 9325 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn cách sử dụng innerHTML trong JavaScript. Bạn sẽ biết cách sử dụng thuộc tính innerHTML để lấy cũng như thiết lập các câu lệnh HTML chứa trong một Element chỉ định sau bài học này.

Phân tích Html Dom Là Gì – Tìm Hiểu Và Thao Tác Dom Trong Javascript

  • Tác giả: chienluc.vn
  • Đánh giá: 3 ⭐ ( 1977 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

DOM Manipulation trong Javascript là gì?

  • Tác giả: toannguyen3105.com
  • Đánh giá: 4 ⭐ ( 7834 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: DOM là gì? DOM là tên gọi viết tắt của (Document Object Model – tạm dịch Mô hình Các Đối tượng Tài liệu). Là một chuẩn được định nghĩa bởi W3C (Tổ Chức Web Toàn Cầu – World Wide Web Consortium). DOM được dùng để truy xuất và thao tác trên các tài liệu có cấu trúc dạng HTML hay XML bằng các ngôn ngữ lập trình thông dụng như Javascript, PHP…

Bài 6: DOM – Xử lý các phần tử HTML trong Javascript

  • Tác giả: goclamweb.com
  • Đánh giá: 3 ⭐ ( 3322 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài này, chúng ta sẽ tìm hiểu một phần rất quan trọng là DOM – xử lý các phần tử HTML trong Javascript. Qua bài học này, chúng ta sẽ biết các truy xuất, lấy dữ liệu, các thuộc tính từ các thẻ html, cũng như cách thêm, xóa các thẻ html.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  JavaScript Number thành chuỗi - Cách sử dụng toString để chuyển đổi Int thành chuỗi - làm thế nào để biến một số thành một chuỗi javascript