Phân tích cú pháp dữ liệu là chuyển đổi dữ liệu từ một định dạng (ví dụ: JSON, XML) sang định dạng khác (ví dụ: Ký hiệu đối tượng JavaScript). Điều này có thể hữu ích khi bạn muốn lưu trữ dữ liệu có cấu trúc trong ứng dụng của mình và không biết nó sẽ trông như thế nào hoặc nó sẽ trông như thế nào trong thời gian chạy. Phân tích cú pháp cho phép bạn sử dụng một ngôn ngữ lập trình quen thuộc hơn với bạn, chẳng hạn như JavaScript, thay vì sử dụng một ngôn ngữ khác hoàn toàn cho cùng một tác vụ.
Phân tích cú pháp dữ liệu cũng được sử dụng cho các mục đích khác: ví dụ: nếu API trả về dữ liệu được định dạng JSON. Tuy nhiên, nếu chương trình của bạn chỉ hiểu dữ liệu được định dạng XML, bạn sẽ không có lựa chọn nào khác ngoài việc phân tích cú pháp JSON thành thứ mà chương trình của bạn có thể hiểu được.
Cách phổ biến nhất điều này xảy ra là thông qua một thư viện gọi là jQuery, phân tích cú pháp các tài liệu HTML thành các phần tử DOM và sau đó sử dụng các phần tử đó trong cơ sở mã của nó. Điều này giúp các nhà phát triển không quen thuộc với cú pháp HTML / CSS / JavaScript dễ dàng làm việc với các API trả về nội dung HTML.
Lộn xộn? Sau đó, hãy chia nhỏ nó cho bạn.
Phân tích cú pháp dữ liệu hoạt động như thế nào?
Phân tích cú pháp dữ liệu hoạt động bằng cách phân tích cú pháp nội dung HTML thô thành mô hình đối tượng sẵn sàng để được truy vấn. Quá trình này được gọi là ánh xạ hoặc lập chỉ mục. Đầu ra có tất cả các trường được ánh xạ với các giá trị tương ứng của chúng được trích xuất từ tài liệu nguồn / trang / email, v.v.
Tại sao nên sử dụng phân tích cú pháp dữ liệu?
Một số cách sử dụng phổ biến nhất bao gồm: Trích xuất dữ liệu từ các trang web, email và các tài liệu khác. Điều này được thực hiện bằng cách phân tích cú pháp nội dung HTML thành một mô hình đối tượng có thể được truy vấn để truy xuất thông tin cần thiết. Đầu ra sẽ có tất cả các trường được ánh xạ với các giá trị của chúng được trích xuất từ tài liệu nguồn / trang / email. Nó cũng cung cấp các phương thức để truy vấn các đối tượng này và truy xuất thông tin cần thiết.
Các thư viện này hỗ trợ các truy vấn khác nhau, bao gồm biểu thức chính quy, truy vấn XPath và các kỹ thuật nâng cao hơn như XQuery, cho phép bạn viết các truy vấn tùy chỉnh bằng cú pháp XML. Các ngôn ngữ được sử dụng phổ biến nhất bao gồm Java, PHP, Python, C # .NET, v.v.
Một số loại trình phân tích cú pháp có sẵn trên web ngày nay; Tuy nhiên, tất cả chúng đều hoạt động tương tự nhau: chúng chuyển đổi văn bản đầu vào thành cấu trúc đối tượng đại diện cho những gì chúng tìm thấy trong văn bản đó.
Các đối tượng đại diện cho các nút hoặc thuộc tính trong các nút (phần tử) đó. Ví dụ: nếu bạn có một tài liệu chứa các thẻ với một số nội dung bên trong chúng, mỗi thẻ đại diện cho một nút đối tượng trong cấu trúc kết quả. Chúng đại diện cho mọi thứ được tìm thấy trong nội dung của yếu tố đó. Thẻ sẽ được biểu diễn dưới dạng một nút thuộc tính chứa thông tin về phần tử mẹ của nó.
Trong các phần sau, chúng tôi sẽ đề cập đến một số trình phân tích cú pháp phổ biến hơn có sẵn trên web ngày hôm nay.
Thư viện phân tích cú pháp HTML.
Các thư viện HTML phân tích cú pháp dữ liệu được sử dụng để phân tích cú pháp nội dung HTML và trích xuất dữ liệu từ nó. Chúng được sử dụng để trích xuất dữ liệu từ các trang web, tài liệu, email hoặc văn bản có cấu trúc. Các thư viện này có thể được sử dụng cho nhiều mục đích khác nhau như thu thập dữ liệu từ các trang web, phân tích cú pháp email, v.v.
Súp đẹp
Beautiful Soup là một thư viện Python để phân tích cú pháp HTML. Nó được thiết kế để dễ sử dụng và nhanh chóng nhưng đủ mạnh để xử lý các tài liệu phức tạp nhất. Beautiful Soup có thể phân tích cú pháp HTML từ nhiều nguồn, bao gồm tệp, URL, email và thậm chí từ khay nhớ tạm của bạn.
Việc phân tích cú pháp các thẻ và thuộc tính HTML được thực hiện nhanh chóng nhưng quyết định. Điều này có nghĩa là Beautiful Soup có thể xử lý các tài liệu phức tạp nhất.
Beautiful Soup đã được thiết kế để dễ sử dụng với API đơn giản để thao tác với tài liệu và một bộ các lớp đầy đủ tính năng để làm việc với các yếu tố trong tài liệu của bạn.
Cổ vũ
Cheerio hỗ trợ phân tích cú pháp dữ liệu JavaScript Object Notation (JSON) và ký hiệu đối tượng ECMAScript gốc (ES5) của JavaScript. Ngoài việc hỗ trợ cú pháp ES5, nó cũng hỗ trợ các tính năng gần đây hơn như chức năng mũi tên trong các khối mã ES6. API của Cheerio được thiết kế để dễ sử dụng và tích hợp với các thư viện khác. Nó cung cấp quyền truy cập vào dữ liệu được phân tích cú pháp dưới dạng Bản đồ Java, Danh sách mảng hoặc luồng đối tượng JSON.
JSoup
JSoup là một thư viện để phân tích dữ liệu các tài liệu HTML và XML. Nó cung cấp một API cho phép bạn phân tích các tệp HTML, XML, JSON, CSS và các phần tử DOM. Bạn có thể sử dụng trình phân tích cú pháp theo nhiều cách khác nhau:
- trích xuất dữ liệu từ tài liệu (ví dụ: trích xuất tất cả các liên kết từ một trang HTML).
- tạo tài liệu mới (ví dụ: tạo tệp XML mới từ đầu hoặc chuyển đổi tệp HTML hiện có sang định dạng XHTML tương đương).
- mục đích xác thực (ví dụ: xác thực biểu mẫu so với giá trị đầu vào của chúng).
Nghệ sĩ múa rối
Puppeteer là một tiện ích mở rộng trình duyệt cho phép bạn kiểm tra và sửa đổi DOM của bất kỳ trang web nào. Nó hiện có sẵn cho Chrome, Firefox và Opera.
Làm cách nào để sử dụng Puppeteer để phân tích cú pháp dữ liệu?
Cách dễ nhất để sử dụng nó là thông qua biểu tượng của tiện ích mở rộng trong thanh công cụ trình duyệt của bạn: Sau khi cài đặt, bạn sẽ thấy một biểu tượng mới trong thanh công cụ của trình duyệt:
Nhấp vào biểu tượng và họ cung cấp cho bạn lời nhắc chọn trang web để kiểm tra. Lần đầu tiên nó chạy, nó sẽ yêu cầu quyền truy cập vào tất cả các trang web hiện đang mở trong trình duyệt của bạn. Bạn luôn có thể thay đổi điều này sau này bằng cách nhấp vào nút Tùy chọn ở cuối cửa sổ:
Từ đó, sử dụng Puppeteer Parser giống như bất kỳ trình kiểm tra DOM nào khác. Nó hoạt động chính xác như Công cụ dành cho nhà phát triển Chrome hoặc Công cụ dành cho nhà phát triển Firefox nhưng mạnh hơn nhiều so với một trong hai công cụ đó.
Xây dựng trình phân tích cú pháp so với mua trình phân tích cú pháp.
Xây dựng trình phân tích cú pháp không chỉ là tạo trình phân tích cú pháp. Nó cũng là về việc hiểu làm thế nào để sử dụng nó. Điều này có nghĩa là bạn cần hiểu ngữ pháp ngôn ngữ của mình và học cách viết một từ vựng / tokenizer tốt (do đó đòi hỏi phải biết đủ về các biểu thức chính quy).
Nhiều người nghĩ rằng mua một trình phân tích cú pháp rẻ hơn so với xây dựng một cái từ đầu. Nhưng điều này không đúng: nếu bạn mua một trình phân tích cú pháp, nó sẽ được cài đặt miễn phí trên máy tính của bạn bởi bất kỳ gói phần mềm nào bạn đang cài đặt vào thời điểm đó. Sau đó, bạn có thể sử dụng nó mà không phải lo lắng về việc cấu hình hoặc cài đặt bất kỳ thứ gì khác.
Điều này nghe có vẻ như là một lợi thế, nhưng hầu hết các trình phân tích cú pháp đều có những hạn chế khiến chúng không phù hợp với một số ứng dụng nhất định (ví dụ: chúng không hỗ trợ các cấu trúc lồng nhau).
Ngoài ra, trong khi có nhiều trình phân tích cú pháp miễn phí, hành động của chúng thường rất hạn chế. Họ không thể xử lý các ngữ pháp phức tạp hơn những ngữ pháp được hỗ trợ bởi các thư viện cơ sở của họ (ngay cả những thư viện này thường có những hạn chế).
Và cuối cùng, khi viết mã dựa trên một thư viện như vậy, bạn sẽ luôn phải nhớ rằng các phiên bản khác nhau có thể hoạt động khác nhau - tùy thuộc vào người đã viết chúng. Vì vậy, trừ khi ai đó đã viết các bài kiểm tra cho thư viện và tài liệu của họ giải thích những gì mỗi phần tử làm - và tại sao - sử dụng API như vậy có thể khá bực bội.
Vì vậy, chúng ta hãy xem xét một số lợi thế của việc tạo một trình phân tích cú pháp:
- Bạn có thể viết trình phân tích cú pháp của riêng mình cho một ngữ pháp mà bất kỳ thư viện nào không hỗ trợ. Bạn không cần phải dựa vào những hạn chế của trình phân tích cú pháp có sẵn và bạn có thể làm cho nó phức tạp hoặc đơn giản như bạn muốn.
- Bạn sẽ có thể sử dụng nó trong tất cả các dự án của mình mà không phải lo lắng về các vấn đề về tính di động (ví dụ: nếu một ngày ai đó quyết định chuyển từ .NET Framework phiên bản 2.0 sang 3.5).
- Nó dễ dàng hơn nhiều so với việc viết các bài kiểm tra cho một trình phân tích cú pháp. Vì không có hạn chế về những gì bạn có thể làm với nó, bạn có toàn quyền kiểm soát những gì xảy ra trong quá trình phân tích cú pháp và cách mỗi phần tử hoạt động khi gặp phải (thậm chí bạn có thể quyết định rằng một số yếu tố nhất định sẽ hoạt động khác nhau tùy thuộc vào ngữ cảnh).
- Mã sẽ đơn giản hơn vì nhiều thứ như xử lý lỗi, ngoại lệ, v.v., đã được chính framework chăm sóc (và bằng cách này, chúng sẽ không làm lộn xộn mã của bạn một cách không cần thiết).
- Và cuối cùng, hầu hết các trình phân tích cú pháp đều đi kèm với một số hạn chế: chúng chỉ hỗ trợ một số ngữ pháp hoặc cấu trúc nhất định bên trong chúng, trong khi việc tạo trình phân tích cú pháp của riêng bạn cho phép bạn tạo bất kỳ loại ngữ pháp nào phù hợp với nhu cầu của bạn nhất.
Proxy dân cư.
Nếu bạn đang phân tích cú pháp dữ liệu HTML được thu thập từ các trang web, bạn có thể sử dụng một số công cụ tự động hóa.
Bạn có biết rằng xoay vòng proxy là rất quan trọng để truy xuất dữ liệu phù hợp một cách nhanh chóng?
Nhiều trang web chặn các công cụ quét web nếu họ không sử dụng proxy dân cư luân phiên. Các proxy không chỉ che giấu địa chỉ IP của họ và ngăn chặn các lệnh cấm – họ có thể phân phối các yêu cầu giữa hàng ngàn IP.
IPBurger cung cấp xoay proxy tự động với các luồng không giới hạn và kết nối đồng thời. Điều đó có nghĩa là bạn có thể nhanh chóng tăng cường thu thập dữ liệu và không bao giờ lo lắng về các lệnh cấm IP.
Kiểm tra proxy quét web của chúng tôi để biết thêm chi tiết.