Tôi đang cố gắng tìm phương thức truy cập dữ liệu giữa các thẻ được máy chủ trả về mà tôi đang thực hiện yêu cầu HTTP. Tài liệu có nhiều thẻ, nhưng chỉ một trong các thẻ có mã JavaScript giữa nó, phần còn lại được bao gồm trong các tệp. Tôi muốn truy cập mã giữa thẻ tập lệnh.Phân tích HTML để nhận giá trị biến của tập lệnh
Một ví dụ của mã này là:
<html>
// Some HTML
<script>
var spect = [['temper', 'init', []],
['fw\/lib', 'init', [{staticRoot: '//site.com/js/'}]],
["cap","dm",[{"tackmod":"profile","xMod":"timed"}]]];
</script>
// More HTML
</html>
Tôi đang tìm kiếm một cách lý tưởng để lấy dữ liệu giữa 'SPECT và phân tích nó. Đôi khi có một khoảng trống giữa 'spect' và '=' và đôi khi không có. Không có ý tưởng tại sao, nhưng tôi không có quyền kiểm soát máy chủ.
Tôi biết câu hỏi này có thể đã được hỏi, nhưng câu trả lời đề xuất sử dụng một cái gì đó như HTMLAgilityPack và tôi muốn tránh sử dụng thư viện cho tác vụ này vì tôi chỉ cần nhận JavaScript từ DOM một lần.
đó chính xác là lý do bạn sử dụng nó, với 2 hoặc 3 dòng mã bạn có thể trích xuất nội dung tập lệnh đó bằng HTMLAgilityPack và sau đó phân tích cú pháp bằng regex hoặc thậm chí là bộ đánh giá JavaScript để nhận giá trị của quang phổ. phân tích cú pháp bằng regex. – Prix
Xin lỗi, nhưng nếu bạn không thể tự viết mã trong 5 phút, có thể dấu hiệu của vấn đề phức tạp hơn bạn nghĩ ban đầu - đó là lý do tại sao các giải pháp tồn tại tồn tại :). Thật khó để xem mục tiêu của bạn thực sự là gì - bạn có muốn học cái gì mới, bạn có bất kỳ hạn chế rõ ràng nào không sử dụng các thư viện bên ngoài không, bạn có muốn thực hành viết một loại mã cụ thể không? –
Tôi đã giải quyết nó bằng cách viết một biểu thức chính quy, sẽ trả lời câu hỏi của chính bạn trong giây lát. Lý do tôi muốn tránh sử dụng một thư viện vì đây là điểm duy nhất trong ứng dụng tôi sẽ cần phải phân tích cú pháp bit này của JavaScript. Tôi nghĩ đó là một thực tế tồi tệ khi sử dụng một thư viện cho nhiệm vụ này khi lý thuyết nó có thể không có. Lý do tại sao tôi hỏi là để tìm hiểu những gì các tùy chọn khác có thể có sẵn để giải quyết vấn đề này. Tôi phải đối mặt với vấn đề này nhiều lần trong các dự án khác và thường kết thúc bằng cách sử dụng CsQuery hoặc HTMLAgilityPack, nhưng đối với một cuộc gọi này tôi muốn tránh chúng thư viện. –