Tôi có một trang HTML chứa đầy dữ liệu được phân tách bằng dấu phẩy và mỗi hàng kết thúc trong thẻ (br /). Trong JavaScript, tôi có thể nhận được điều này từ DOM bằng cách yêu cầu bên trong của phần tử chứa dữ liệu. Show
Câu hỏi của tôi là làm thế nào để phân tích bên trong để lấy dữ liệu từ giữa dấu phẩy và bắt đầu trên dòng tiếp theo khi nó nhấn vào thẻ (BR /)? Bạn có thể bỏ qua phần còn lại vì đó là câu hỏi của tôi ở trên. Khi tôi phân tích từng dòng, tôi sẽ bắt đầu một đối tượng mới và đặt dữ liệu vào đó. Tôi chỉ không chắc chắn phải làm gì với bên trong! Tôi đã đặt dữ liệu thông qua hàm CSVTOarray mà tôi tìm thấy nhưng cuối cùng đã kết thúc với một mảng của một mảng lớn thay vì một mảng mảng cho mỗi dòng. Tôi có thể làm việc theo cách của mình thông qua mảng này tạo các đối tượng từ dữ liệu trên đường đi nhưng biến bên trong thành một mảng duy nhất có vẻ là một bước không cần thiết khi tôi có thể phân tích dữ liệu thẳng vào đối tượng. Dữ liệu được đặt ở đó thông qua Ajax. Tôi có thể thay đổi định dạng mà dữ liệu xuất hiện. Như tôi đã nói rằng tôi có nó phân tách dữ liệu với dấu phẩy và thẻ (BR /) ở cuối dòng. Tôi không biết điều này có ngu ngốc hay không. Khi được hỏi ngày 10 tháng 5 năm 2012 lúc 17:11May 10, 2012 at 17:11
Peter Bushnellpeter BushnellPeter Bushnell 8981 Huy hiệu vàng13 Huy hiệu bạc28 Huy hiệu đồng1 gold badge13 silver badges28 bronze badges 3 Vì vậy, bạn muốn CSV-Parse một tệp trong đó các dòng mới được chỉ định bằng 0 thay vì 1? Chỉ cần sử dụng dấu phân cách đó trong CSV-Parser của bạn sau đó. Phiên bản đơn giản:
Bạn cũng có thể chia tách bằng các biểu thức thông thường, như
Nếu bạn thực sự sử dụng dữ liệu CSV trong một DOM, bạn có thể xóa tất cả các yếu tố BR và sử dụng các nút (văn bản) còn lại làm mảng dòng. Đã trả lời ngày 10 tháng 5 năm 2012 lúc 17:17May 10, 2012 at 17:17
Bạn đề cập rằng bạn có quyền kiểm soát dữ liệu bạn nhận được thông qua AJAX và bạn đúng rằng cách tiếp cận hiện tại của bạn không phải là ý tưởng tốt nhất. Trước hết, bạn không bao giờ nên cố gắng tự phân tích HTML, ngay cả khi bạn nghĩ rằng nó "đơn giản" - các trình duyệt khác nhau sẽ cung cấp cho bạn 2 khác nhau cho cùng một nội dung. Thay vào đó, hãy sử dụng DOM để tìm thông tin bạn đang tìm kiếm.Điều đó nói rằng, cách tiếp cận chính xác ở đây chỉ là trả lại một đối tượng JSON từ máy chủ; Sau đó, bạn sẽ có quyền truy cập trực tiếp vào dữ liệu của bạn. Gần như mọi ngôn ngữ phía máy chủ đều có một số loại cơ sở để xuất JSON và JavaScript có thể phân tích chuỗi JSON nguyên bản1 với 3.Từ máy chủ, trở lại:
Trên máy khách (giả sử jQuery),
1 - Trong các trình duyệt hiện đại Đã trả lời ngày 10 tháng 5 năm 2012 lúc 17:28May 10, 2012 at 17:28
josh3736josh3736josh3736 134K30 Huy hiệu vàng211 Huy hiệu bạc256 Huy hiệu Đồng30 gold badges211 silver badges256 bronze badges 1 Bạn có thể chỉ cần làm điều này nếu bạn chỉ muốn "lấy dữ liệu từ giữa dấu phẩy":
Hoặc nếu bạn chỉ muốn một mảng dòng:
Điều đó sẽ trả về một mảng các dòng với các yếu tố 4 còn nguyên vẹn. Tuy nhiên, không rõ liệu đó có phải là điều bạn muốn không.Đã trả lời ngày 10 tháng 5 năm 2012 lúc 17:22May 10, 2012 at 17:22
Elliot Bonevilleelliot BonevilleElliot Bonneville 50.1K23 Huy hiệu vàng93 Huy hiệu bạc123 Huy hiệu Đồng23 gold badges93 silver badges123 bronze badges Cập nhật tháng 11 năm 2020Tôi đã tìm kiếm các thư viện trình phân tích cú pháp NodeJS HTML hàng đầu. Nội dung chính
Trong nút.Các ứng dụng JS và Express, Res.SendFile () có thể được sử dụng để cung cấp các tệp.Việc cung cấp các tệp HTML bằng cách sử dụng Express có thể hữu ích khi bạn cần một giải pháp để phục vụ các trang tĩnh.res.sendFile() can be used to deliver files. Delivering HTML files using Express can be useful when you need a solution for serving static pages. Cập nhật tháng 11 năm 2020 Tôi đã tìm kiếm các thư viện trình phân tích cú pháp NodeJS HTML hàng đầu.. Nội dung chính Bắt đầu và thiết lập các phụ thuộc Sử dụng phải lấy dữ liệu để sử dụng với JSdom Sử dụng bộ chọn CSS với JSdom Lọc qua các phần tử HTML Tải xuống các tệp MIDI mà chúng tôi muốn từ trang web 0.HTML-parse-Stringify- 1.Node-HTML-Parser- 2.Mở rộng rộng lớn của World Wide Web Làm cách nào để phân tích một trang HTML trong Node JS? 3.Làm cách nào để loại bỏ nút html js? 4.Vì các trường hợp sử dụng của tôi không yêu cầu thư viện có nhiều tính năng, tôi có thể tập trung vào sự ổn định và hiệu suất. 5.DRAFTJS-TO-HTML- 6.Theo sự ổn định, tôi có nghĩa là tôi muốn thư viện được cộng đồng sử dụng đủ lâu để tìm lỗi và nó vẫn sẽ được duy trì và các vấn đề mở sẽ bị đóng lại. Thật khó để hiểu được tương lai của một thư viện nguồn mở, nhưng tôi đã thực hiện một bản tóm tắt nhỏ dựa trên 10 thư viện hàng đầu trong OpenBase.. Thật khó để hiểu được tương lai của một thư viện nguồn mở, nhưng tôi đã thực hiện một bản tóm tắt nhỏ dựa trên 10 thư viện hàng đầu trong OpenBase.. Tôi chia thành 2 nhóm theo cam kết cuối cùng (và trên mỗi nhóm, đơn đặt hàng theo GitHub bắt đầu): Cam kết cuối cùng là trong 6 tháng qua: Tôi đã tìm kiếm các thư viện trình phân tích cú pháp NodeJS HTML hàng đầu.Nội dung chính Bắt đầu và thiết lập các phụ thuộc Sử dụng phải lấy dữ liệu để sử dụng với JSdom Sử dụng bộ chọn CSS với JSdomLọc qua các phần tử HTML Tải xuống các tệp MIDI mà chúng tôi muốn từ trang web 4Mở rộng rộng lớn của World Wide Web Nội dung chínhBắt đầu và thiết lập các phụ thuộc Sử dụng phải lấy dữ liệu để sử dụng với JSdomSử dụng bộ chọn CSS với JSdom Lọc qua các phần tử HTMLVí dụ: 82 sẽ đưa cho bạn văn bản bên trong thẻ 83 trên trang. Nếu bạn lưu mã này vào một tệp có tên 84 và chạy nó bằng lệnh 85, nó sẽ ghi lại tiêu đề của trang web vào bảng điều khiển.Sử dụng bộ chọn CSS với JSdomNếu bạn muốn nhận được cụ thể hơn trong truy vấn của mình, có nhiều bộ chọn bạn có thể sử dụng để phân tích thông qua HTML. Hai trong số những cái phổ biến nhất là tìm kiếm các yếu tố theo lớp hoặc ID. Nếu bạn muốn có được một Div với ID của "Menu", bạn sẽ sử dụng 86 và nếu bạn muốn tất cả các cột tiêu đề trong bảng của VGM MIDIS, bạn sẽ làm 87Những gì chúng tôi muốn trên trang này là các siêu liên kết cho tất cả các tệp MIDI chúng tôi cần tải xuống. Chúng tôi có thể bắt đầu bằng cách nhận mọi liên kết trên trang bằng cách sử dụng 88. Thêm phần sau vào mã của bạn trong 84: 8Mã này ghi lại URL của mọi liên kết trên trang. Chúng tôi có thể xem qua tất cả các yếu tố từ một bộ chọn nhất định bằng hàm 90. Lặp lại thông qua mọi liên kết trên trang là tuyệt vời, nhưng chúng tôi sẽ cần phải có một chút cụ thể hơn một chút nếu chúng tôi muốn tải xuống tất cả các tệp MIDI.Lọc qua các phần tử HTMLTrước khi viết thêm mã để phân tích nội dung mà chúng tôi muốn, trước tiên, hãy để xem HTML mà trình duyệt được trình duyệt hiển thị. Mỗi trang web là khác nhau và đôi khi nhận được dữ liệu phù hợp trong số chúng đòi hỏi một chút sáng tạo, nhận dạng mẫu và thử nghiệm. Mục tiêu của chúng tôi là tải xuống một loạt các tệp MIDI, nhưng có rất nhiều bản nhạc trùng lặp trên trang web này, cũng như các bản phối lại của các bài hát. Chúng tôi chỉ muốn một trong mỗi bài hát và vì mục tiêu cuối cùng của chúng tôi là sử dụng dữ liệu này để đào tạo một mạng lưới thần kinh để tạo ra âm nhạc Nintendo chính xác, chúng tôi sẽ không muốn đào tạo nó trên các bản phối lại do người dùng tạo. Khi bạn viết mã để phân tích thông qua một trang web, thường sẽ hữu ích khi sử dụng các công cụ nhà phát triển có sẵn cho bạn trong hầu hết các trình duyệt hiện đại. Nếu bạn nhấp chuột phải vào yếu tố bạn quan tâm, bạn có thể kiểm tra HTML đằng sau yếu tố đó để hiểu rõ hơn. Bạn có thể viết các chức năng bộ lọc để tinh chỉnh dữ liệu bạn muốn từ các bộ chọn của mình. Đây là các hàm lặp qua tất cả các yếu tố cho một bộ chọn nhất định và trả về đúng hay sai dựa trên việc chúng có nên được đưa vào tập hợp hay không. Nếu bạn đã xem qua dữ liệu được đăng nhập vào bước trước, bạn có thể nhận thấy rằng có khá nhiều liên kết trên trang không có thuộc tính 91 và do đó không dẫn đến đâu. Chúng tôi có thể chắc chắn rằng đó không phải là MIDI mà chúng tôi đang tìm kiếm, vì vậy hãy viết một hàm ngắn để lọc các phần tử cũng như các phần tử chứa phần tử 91 dẫn đến tệp 93: 9Bây giờ chúng tôi có vấn đề không muốn tải xuống các bản sao hoặc bản phối được tạo của người dùng. Đối với điều này, chúng tôi có thể sử dụng các biểu thức thông thường để đảm bảo rằng chúng tôi chỉ nhận được các liên kết mà văn bản không có dấu ngoặc đơn, vì chỉ các bản sao và phối lại chứa dấu ngoặc đơn: 4Hãy thử thêm chúng vào mã của bạn trong 84 bằng cách tạo một mảng trong bộ sưu tập các nút phần tử HTML được trả về từ 95 và áp dụng các chức năng bộ lọc của chúng tôi cho nó: 7Chạy lại mã này và nó chỉ nên in các tệp 93 mà không sao chép bất kỳ bài hát cụ thể nào.Tải xuống các tệp MIDI mà chúng tôi muốn từ trang webBây giờ chúng tôi có mã hoạt động để lặp qua mỗi tệp MIDI mà chúng tôi muốn, chúng tôi phải viết mã để tải xuống tất cả chúng. Trong chức năng gọi lại để lặp qua tất cả các liên kết MIDI, hãy thêm mã này để truyền tải tải xuống MIDI vào một tệp cục bộ, hoàn thành với việc kiểm tra lỗi: 9Chạy mã này từ một thư mục mà bạn muốn lưu tất cả các tệp MIDI và xem màn hình thiết bị đầu cuối của bạn hiển thị tất cả 2230 tệp MIDI mà bạn đã tải xuống (tại thời điểm viết bài này). Với điều đó, chúng ta nên hoàn thành việc cạo tất cả các tệp MIDI mà chúng ta cần. Đi qua và lắng nghe họ và thưởng thức một số nhạc Nintendo! Mở rộng rộng lớn của World Wide WebBây giờ bạn có thể lập trình lấy mọi thứ từ các trang web, bạn có quyền truy cập vào một nguồn dữ liệu lớn cho bất kỳ dự án nào của bạn cần. Một điều cần lưu ý là các thay đổi đối với trang web HT HTML có thể phá vỡ mã của bạn, vì vậy hãy đảm bảo cập nhật mọi thứ nếu bạn đang xây dựng các ứng dụng trên hết. Bạn cũng có thể muốn thử so sánh chức năng của thư viện JSDOM với các giải pháp khác bằng cách làm theo các hướng dẫn để lấy web bằng cách sử dụng kịch bản trình duyệt Cheerio và không đầu bằng cách sử dụng Puppeteer hoặc một thư viện tương tự có tên là Nhà viết kịch. Nếu bạn đang tìm kiếm một cái gì đó để làm với dữ liệu bạn vừa lấy từ kho lưu trữ nhạc trò chơi video, bạn có thể thử sử dụng các thư viện Python như Magenta để đào tạo mạng lưới thần kinh với nó. Tôi mong muốn được xem những gì bạn xây dựng. Hãy tiếp cận và chia sẻ kinh nghiệm của bạn hoặc hỏi bất kỳ câu hỏi nào.
Làm cách nào để phân tích một trang HTML trong Node JS?Bạn có thể sử dụng các mô -đun NPM JSDOM và HTMLPARSER để tạo và phân tích DOM trong nút. JS .... Đẹp cho Python .. Bạn có thể chuyển đổi HTML của bạn thành XHTML và sử dụng XSLT .. HTMLagilityPack cho. .... CSQuery cho .. Làm cách nào để loại bỏ nút html js?Cách cạo một trang web trong nút bằng cách sử dụng Cheerio... Bước 1 - Tạo một thư mục làm việc..... Bước 2 - Khởi tạo dự án..... Bước 3 - Cài đặt phụ thuộc..... Bước 4 - Kiểm tra trang web bạn muốn cạo..... Bước 5 - Viết mã để xóa dữ liệu .. Làm thế nào để bạn phân tích HTML?Phân tích cú pháp HTML liên quan đến việc xây dựng mã thông báo và xây dựng cây.Mã thông báo HTML bao gồm các thẻ bắt đầu và kết thúc, cũng như tên và giá trị thuộc tính.Nếu tài liệu được hình thành tốt, phân tích cú pháp thì đơn giản và nhanh hơn.Trình phân tích cú pháp phân tích cú pháp đầu vào vào tài liệu, xây dựng cây tài liệu.tokenization and tree construction. HTML tokens include start and end tags, as well as attribute names and values. If the document is well-formed, parsing it is straightforward and faster. The parser parses tokenized input into the document, building up the document tree.tokenization and tree construction. HTML tokens include start and end tags, as well as attribute names and values. If the document is well-formed, parsing it is straightforward and faster. The parser parses tokenized input into the document, building up the document tree. Làm cách nào để gửi nội dung HTML trong Node JS?Trong nút.Các ứng dụng JS và Express, Res.SendFile () có thể được sử dụng để cung cấp các tệp.Việc cung cấp các tệp HTML bằng cách sử dụng Express có thể hữu ích khi bạn cần một giải pháp để phục vụ các trang tĩnh.res.sendFile() can be used to deliver files. Delivering HTML files using Express can be useful when you need a solution for serving static pages.res. sendFile() can be used to deliver files. Delivering HTML files using Express can be useful when you need a solution for serving static pages. |