Hướng dẫn how do you process html in java? - làm thế nào để bạn xử lý html trong java?

205

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi thực hiện rất nhiều phân tích cú pháp HTML trong công việc của mình. Cho đến bây giờ, tôi đã sử dụng trình duyệt không đầu HTMLunit để phân tích cú pháp và tự động hóa trình duyệt.

Bây giờ, tôi muốn tách cả hai nhiệm vụ.

Tôi muốn sử dụng trình phân tích cú pháp HTML nhẹ vì mất nhiều thời gian trong htmlunit để đầu tiên tải một trang, sau đó lấy nguồn và sau đó phân tích nó.

Tôi muốn biết trình phân tích cú pháp HTML nào có thể phân tích HTML một cách hiệu quả. tôi cần

  1. Tốc độ, vận tốc
  2. Dễ dàng xác định vị trí bất kỳ htmlelement nào bằng "ID" hoặc "tên" hoặc "loại thẻ".

Tôi sẽ ổn nếu nó không làm sạch mã HTML bẩn. Tôi không cần phải làm sạch bất kỳ nguồn HTML nào. Tôi chỉ cần một cách dễ nhất để di chuyển qua HTMLelements và thu hoạch dữ liệu từ chúng.

Machavity ♦

30.2k26 Huy hiệu vàng87 Huy hiệu bạc98 Huy hiệu đồng26 gold badges87 silver badges98 bronze badges

Hỏi ngày 30 tháng 1 năm 2010 lúc 16:52Jan 30, 2010 at 16:52

1

Self Plug: Tôi vừa phát hành một trình phân tích cú pháp Java HTML mới: JSOUP. Tôi đề cập đến nó ở đây bởi vì tôi nghĩ rằng nó sẽ làm những gì bạn đang theo đuổi.

Thủ thuật đảng của nó là cú pháp chọn CSS để tìm các yếu tố, ví dụ:

String html = "First parse"
  + "

Parsed HTML into a doc.

"; Document doc = Jsoup.parse[html]; Elements links = doc.select["a"]; Element head = doc.select["head"].first[];

Xem Javadoc bộ chọn để biết thêm thông tin.

Đây là một dự án mới, vì vậy bất kỳ ý tưởng để cải thiện đều rất được hoan nghênh!

Mịn

26.7K40 Huy hiệu vàng146 Huy hiệu bạc230 Huy hiệu đồng40 gold badges146 silver badges230 bronze badges

Đã trả lời ngày 31 tháng 1 năm 2010 lúc 7:41Jan 31, 2010 at 7:41

Jonathan Hedleyjonathan HedleyJonathan Hedley

10.3k3 Huy hiệu vàng33 Huy hiệu bạc45 Huy hiệu Đồng3 gold badges33 silver badges45 bronze badges

0

Điều tốt nhất tôi từng thấy cho đến nay là htmlcleaner:

HTMLCleaner là trình phân tích cú pháp HTML nguồn mở được viết bằng Java. HTML được tìm thấy trên web thường bị bẩn, không được hình thành và không phù hợp để xử lý thêm. Đối với bất kỳ mức tiêu thụ nghiêm trọng nào của các tài liệu đó, trước tiên cần phải dọn sạch mớ hỗn độn và đưa thứ tự đến các thẻ, thuộc tính và văn bản thông thường. Đối với tài liệu HTML đã cho, HTMLCleaner sắp xếp lại các yếu tố riêng lẻ và tạo ra XML được hình thành tốt. Theo mặc định, nó tuân theo các quy tắc tương tự mà hầu hết các trình duyệt web sử dụng để tạo mô hình đối tượng tài liệu. Tuy nhiên, người dùng có thể cung cấp thẻ tùy chỉnh và bộ quy tắc để lọc và cân bằng thẻ.

Với HTMLCleaner, bạn có thể xác định vị trí bất kỳ phần tử nào bằng XPath.

Đối với các trình phân tích cú pháp HTML khác, hãy xem câu hỏi này như vậy.

Đã trả lời ngày 30 tháng 1 năm 2010 lúc 16:53Jan 30, 2010 at 16:53

Tangenstangenstangens

38.3K18 Huy hiệu vàng119 Huy hiệu bạc136 Huy hiệu đồng18 gold badges119 silver badges136 bronze badges

3

Eduardo

2.2775 huy hiệu vàng26 Huy hiệu bạc42 Huy hiệu đồng5 gold badges26 silver badges42 bronze badges

Đã trả lời ngày 30 tháng 1 năm 2010 lúc 17:32Jan 30, 2010 at 17:32

Ms2gerMs2gerMs2ger

15.4K6 Huy hiệu vàng35 Huy hiệu bạc35 Huy hiệu Đồng6 gold badges35 silver badges35 bronze badges

1

HTML là cốt lõi của web, tất cả các trang bạn thấy trên Internet là HTML, cho dù chúng được tạo động bởi JavaScript, JSP, PHP, ASP hoặc bất kỳ công nghệ web nào khác. Trình duyệt của bạn thực sự phân tích HTML và hiển thị nó cho bạn. Nhưng bạn sẽ làm gì, & nbsp; nếu bạn cần phân tích tài liệu HTML và tìm một số phần tử, & nbsp; thẻ, thuộc tính hoặc kiểm tra xem một phần tử cụ thể có tồn tại hay không từ chương trình Java. Nếu bạn đã tham gia chương trình Java trong một số năm, tôi chắc chắn bạn đã thực hiện một số công việc phân tích cú pháp XML bằng cách sử dụng trình phân tích cú pháp như DOM và Sax, nhưng cũng có khả năng bạn không thực hiện bất kỳ công việc phân tích cú pháp HTML nào. Trớ trêu thay, có một vài trường hợp khi bạn cần phân tích các tài liệu HTML từ ứng dụng Core Java, không bao gồm Servlet và các công nghệ web Java khác.

Để làm cho vấn đề tồi tệ hơn, cũng không có thư viện HTTP hoặc HTML trong Core JDK; Hoặc ít nhất tôi không nhận thức được điều đó. Đó là lý do tại sao khi nói đến việc phân tích tệp HTML, nhiều lập trình viên Java phải xem Google để tìm hiểu làm thế nào để có được giá trị của thẻ HTML trong Java.

Khi tôi cần tôi chắc chắn rằng sẽ có một thư viện nguồn mở sẽ làm điều đó cho tôi, nhưng không biết rằng nó là tuyệt vời và giàu có như JSOUP. Nó không chỉ cung cấp hỗ trợ để đọc và phân tích các tài liệu HTML mà còn cho phép bạn trích xuất bất kỳ tệp HTML nào, thuộc tính của chúng, lớp CSS của chúng theo kiểu jQuery và cũng cho phép bạn sửa đổi chúng.JSoup. It not only provides support to read and parse HTML documents but also allows you to extract any element form HTML file, their attribute, their CSS class in JQuery style, and also allows you to modify them.

Bạn có thể có thể làm bất cứ điều gì với một tài liệu HTML bằng JSOUP. Trong bài viết này, chúng tôi sẽ phân tích tệp HTML và HTML và tìm ra giá trị của tiêu đề và thẻ tiêu đề. Chúng tôi cũng sẽ thấy một ví dụ về việc tải xuống và phân tích cú pháp HTML từ tệp cũng như bất kỳ URL hoặc Internet nào bằng cách phân tích trang chủ của Google ở ​​Java.

Thư viện JSOUP là gì?

JSOUP là một thư viện Java nguồn mở để làm việc với HTML trong thế giới thực. Nó cung cấp một API rất thuận tiện để trích xuất và thao tác dữ liệu, sử dụng các phương thức tốt nhất của DOM, CSS và JQuery. JSOUP thực hiện thông số kỹ thuật và phân tích cú pháp HTML của WhatWG với các trình duyệt hiện đại như Chrome và Firefox. Dưới đây là một số tính năng hữu ích của thư viện JSOUP:WHATWG HTML5 specification and parses HTML to the same DOM as modern browsers like Chrome and Firefox do. Here are some of the useful features of jsoup library :

  • & nbsp; & nbsp; JSoup có thể cạo và phân tích HTML từ URL, Tệp hoặc Chuỗi
  • & nbsp; & nbsp; JSOUP có thể tìm và trích xuất dữ liệu, sử dụng bộ chọn Dom Traversal hoặc CSS
  • & nbsp; & nbsp; JSOUP cho phép bạn thao tác các phần tử, thuộc tính và văn bản HTML
  • & nbsp; & nbsp; JSOUP cung cấp nội dung do người dùng sử dụng sạch đối với danh sách trắng an toàn, để ngăn chặn các cuộc tấn công XSS
  • & nbsp; & nbsp; JSoup cũng xuất hiện HTML gọn gàng

JSOUP được thiết kế để đối phó với các loại HTML khác nhau được tìm thấy trong thế giới thực, bao gồm HTML được xác thực thích hợp để thu thập thẻ không có giá trị không đầy đủ. Một trong những thế mạnh cốt lõi của JSOUP là nó rất mạnh mẽ.

Phân tích cú pháp HTML trong Java bằng JSOUP

Trong hướng dẫn phân tích cú pháp Java HTML này, chúng ta sẽ thấy ba ví dụ khác nhau về phân tích cú pháp và truyền tải các tài liệu HTML trong Java bằng JSOUP. Trong ví dụ đầu tiên, chúng tôi sẽ phân tích một chuỗi HTML có nội dung tất cả các thẻ dưới dạng chuỗi theo nghĩa đen trong java.jsoup. In the first example, we will parse an HTML String that contents all tags in form of String literal in Java.

Trong ví dụ thứ hai, chúng tôi sẽ tải xuống tài liệu HTML của chúng tôi từ Web và trong ví dụ thứ ba, chúng tôi sẽ tải đăng nhập tệp HTML mẫu của riêng mình để phân tích cú pháp. Tệp này là một tài liệu HTML mẫu có chứa thẻ tiêu đề và div trong phần thân chứa biểu mẫu HTML.login.html for parsing. This file is a sample HTML document that contains title tag and a div in the body that contains an HTML form.

Nó có thẻ đầu vào để ghi tên người dùng và mật khẩu và gửi và đặt lại nút để có thêm hành động. Đó là HTML thích hợp có thể được xác thực, tức là tất cả các thẻ và thuộc tính được đóng đúng. Đây là cách tệp HTML mẫu của chúng tôi trông như thế nào:

DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "//www.w3.org/TR/html4/loose.dtd">

    
        
        Login Page
    
    
        
            
                Username : 
                Password : 
                
                
            
        
    

Phân tích cú pháp HTML rất đơn giản với JSOUP, tất cả những gì bạn cần gọi là phương thức tĩnh jsoup.parse [] và chuyển chuỗi HTML của bạn cho nó. JSOUP cung cấp một số phương thức phân tích quá tải [] để đọc tệp HTML từ chuỗi, một tệp, từ một URI cơ sở, từ URL và từ InputStream.Jsoup.parse[]and pass your HTML String to it. JSoup provides several overloaded parse[] methods to read HTML file from String, a File, from a base URI, from an URL, and from an InputStream.

Bạn cũng có thể chỉ định mã hóa ký tự để đọc chính xác các tệp HTML không ở định dạng "UTF-8". Dưới đây là danh sách đầy đủ các phương thức phân tích cú pháp HTML từ thư viện JSOUP."UTF-8" format. Here is complete list of HTML parse methods from the JSoup library.

Phương thức phân tích cú pháp [chuỗi HTML] phân tích cú pháp HTML đầu vào vào một tài liệu mới. Trong JSOUP, tài liệu mở rộng phần tử mở rộng nút. Ngoài ra TextNode mở rộng nút. Miễn là bạn vượt qua trong một chuỗi không null, bạn được đảm bảo sẽ có một phân tích thành công, hợp lý, với một tài liệu chứa [ít nhất] một đầu và phần tử cơ thể.parse[String html] method parses the input HTML into a new Document. In Jsoup, Document extends Element which extends Node. Also TextNode extends Node. As long as you pass in a non-null string, you're guaranteed to have a successful, sensible parse, with a Document containing [at least] a head and a body element.

Khi bạn có một tài liệu, bạn có thể nhận được dữ liệu bạn muốn bằng cách gọi các phương thức phù hợp trong tài liệu và phần tử và nút của các lớp cha.Element and Node.

Chương trình Java để phân tích tài liệu HTML

Dưới đây là chương trình Java hoàn chỉnh của chúng tôi để phân tích chuỗi HTML, tải xuống tệp HTML từ Internet và tệp HTML từ hệ thống tệp cục bộ. Để chạy chương trình này, bạn có thể sử dụng Eclipse IDE hoặc bạn chỉ có thể sử dụng bất kỳ dấu nhắc lệnh IDE hoặc lệnh nào. Trong Eclipse, rất dễ dàng, chỉ cần sao chép mã này, tạo một dự án Java mới, nhấp chuột phải vào gói SRC và dán nó.

Eclipse sẽ chăm sóc việc tạo tệp gói và tệp Java thích hợp có cùng tên, vì vậy hoàn toàn ít công việc hơn. Nếu bạn đã có một dự án Java mẫu, thì đó chỉ là một bước. Sau chương trình Java hiển thị 3 ví dụ về phân tích cú pháp và đi qua tệp HTML.

Trong ví dụ đầu tiên, chúng tôi trực tiếp phân tích một chuỗi với nội dung HTML, trong ví dụ thứ hai, chúng tôi phân tích tệp HTML được tải xuống từ URL, trong ví dụ thứ ba, chúng tôi tải và phân tích tài liệu HTML từ hệ thống tệp cục bộ.

Trong ví dụ đầu tiên và thứ ba, chúng tôi sử dụng phương thức Parse để lấy đối tượng tài liệu có thể được truy vấn để trích xuất bất kỳ giá trị thẻ hoặc giá trị thuộc tính nào. Trong ví dụ thứ hai, chúng tôi sử dụng jsoup.connect [] với, chăm sóc kết nối với URL, tải xuống HTML và phân tích cú pháp. Phương thức này cũng trả về đối tượng tài liệu & nbsp; có thể được sử dụng để truy vấn thêm và nhận giá trị của bất kỳ thẻ hoặc thuộc tính nào.Document object which can be queried to extract any tag value or attribute value. In the second example, we use Jsoup.connect[] with, which takes care of making a connection to URL, downloading HTML and parsing it. This method also returns the Document object which can be used for further querying and getting the value of any tag or attribute.

import java.io.File;
import java.io.IOException;
 
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
 
/**
* Java Program to parse/read HTML documents from File using Jsoup library.
* Jsoup is an open source library which allows Java developer to parse HTML
* files and extract elements, manipulate data, change style using DOM, CSS and
* JQuery like method.
*
* @author Javin Paul
*/
public class HTMLParser{
 
    public static void main[String args[]] {
 
        // Parse HTML String using JSoup library
        String HTMLSTring = ""
                + ""
                + ""
                + "JSoup Example"
                + ""
                + ""
                + ""+"

HelloWorld

"
+ "" + ""; Document html = Jsoup.parse[HTMLSTring]; String title = html.title[]; String h2 = html.body[].getElementsByTag["h2"].text[]; System.out.println["Input HTML String to JSoup :" + HTMLSTring]; System.out.println["After parsing, Title : " + title]; System.out.println["Afte parsing, Heading : " + h2]; // JSoup Example 2 - Reading HTML page from URL Document doc; try { doc = Jsoup.connect["//google.com/"].get[]; title = doc.title[]; } catch [IOException e] { e.printStackTrace[]; } System.out.println["Jsoup Can read HTML page from URL, title : " + title]; // JSoup Example 3 - Parsing an HTML file in Java //Document htmlFile = Jsoup.parse["login.html", "ISO-8859-1"]; // wrong Document htmlFile = null; try { htmlFile = Jsoup.parse[new File["login.html"], "ISO-8859-1"]; } catch [IOException e] { // TODO Auto-generated catch block e.printStackTrace[]; } // right title = htmlFile.title[]; Element div = htmlFile.getElementById["login"]; String cssClass = div.className[]; // getting class form HTML element System.out.println["Jsoup can also parse HTML file directly"]; System.out.println["title : " + title]; System.out.println["class of div tag : " + cssClass]; } }
Output:
Input HTML String to JSoup :DOCTYPE html>
JSoup Example

HelloWorld

After parsing, Title : JSoup Example
Afte parsing, Heading : HelloWorld
Jsoup Can read HTML page from URL, title : Google
Jsoup can also parse HTML file directly
title : Login Page
class of div tag : simple

Output:
Input HTML String to JSoup :DOCTYPE html>
JSoup Example

HelloWorld

After parsing, Title : JSoup Example
Afte parsing, Heading : HelloWorld
Jsoup Can read HTML page from URL, title : Google
Jsoup can also parse HTML file directly
title : Login Page
class of div tag : simple

Điều tốt về Jsoup là nó rất mạnh mẽ. Trình phân tích cú pháp JSOUP HTML sẽ thực hiện mọi nỗ lực để tạo ra một phân tích rõ ràng từ HTML bạn cung cấp, bất kể HTML có được hình thành tốt hay không. Nó có thể xử lý các sai lầm sau: Thẻ chưa được giải thích [ví dụ: & nbsp; java scala đến javascala] thẻ ngầm [ví dụ cái đầu]
unclosed tags [e.g. Java Scala to Java Scala]
implicit tags [e.g. a naked Java is Great is wrapped into a ]
reliably creating the document structure [html containing a head and body, and only appropriate elements within the head]

Đó là tất cả về cách phân tích một tài liệu HTML trong Java. JSOUP là một thư viện nguồn mở tuyệt vời và mạnh mẽ, giúp đọc tài liệu HTML, đoạn cơ thể, chuỗi HTML và phân tích trực tiếp nội dung HTML từ web cực kỳ dễ dàng.how to parse an HTML document in Java. Jsoup is an excellent and robust open-source library that makes reading HTML document, body fragment, HTML string and directly parsing HTML content from the web extremely easy.

Trong bài viết này, chúng tôi đã học nóng để có được giá trị của một thẻ HTML cụ thể trong Java, như trong ví dụ đầu tiên, chúng tôi đã trích xuất tiêu đề và giá trị của thẻ H1 làm văn bản và trong ví dụ thứ ba, chúng tôi đã học cách nhận giá trị của một giá trị của một Thuộc tính từ thẻ HTML bằng cách trích xuất lớp CSS.

Ngoài phong cách jQuery mạnh mẽ & nbsp; html.body []. Phương thức ClassName [] & nbsp; để nhanh chóng nhận được lớp Tiêu đề và CSS. Hãy vui vẻ với JSOUP và chúng tôi sẽ sớm thấy một vài ví dụ về API này.html.body[].getElementsByTag["h2"].text[] method, which you can use to extract any HTML tag, it also provides convenience methods like Document.title[] and Element.className[] method to quickly get title and CSS class. Have fun with Jsoup and we will see a couple of more examples of this API soon.

Đọc thêm Giới thiệu về các dịch vụ Restful của Spring MVC 4 ở Java bằng cách sử dụng các nguyên tắc cơ bản của Java Java Web
Introduction to Spring MVC 4
RESTFul Services in Java using Jersey
Java Web Fundamentals

Tôi có thể sử dụng HTML với Java không?

Trong Java, chúng ta có thể trích xuất nội dung HTML và có thể phân tích tài liệu HTML.we can extract the HTML content and can parse the HTML Document.

Làm cách nào để liên kết mã HTML với Java?

HTML code: Username: < input type = "text" name = "username" /> Password: < input type = "password" name = "password" />.
Hình ảnh trường:.
Mã Java trong servlet: chuỗi username = request.getParameter ["tên người dùng"];Chuỗi mật khẩu = request.getParameter ["mật khẩu"];....
Output:.

Làm thế nào để bạn phân tích phản hồi HTML trong Java?

JSOUP có thể phân tích các tệp HTML, luồng đầu vào, URL hoặc thậm chí các chuỗi.Nó giúp trích xuất dữ liệu từ HTML bằng cách cung cấp các phương thức truyền tải mô hình đối tượng [DOM] và các bộ chọn giống như CSS và jQuery.JSOUP có thể thao tác nội dung: chính phần tử HTML, thuộc tính của nó hoặc văn bản của nó.. It eases data extraction from HTML by offering Document Object Model [DOM] traversal methods and CSS and jQuery-like selectors. jsoup can manipulate the content: the HTML element itself, its attributes, or its text.

Việc sử dụng JSOUP trong Java là gì?

JSOUP là một trình phân tích cú pháp Java HTML.Đó là một thư viện Java được sử dụng để phân tích các tài liệu HTML.JSOUP cung cấp giao diện lập trình để tập trung và kiểm soát thông tin từ các tài liệu URL hoặc HTML.Nó sử dụng các hệ thống giống như DOM, CSS và JQuery để tập trung và kiểm soát các hồ sơ.to parse html documents. Jsoup gives programming interface to concentrate and control information from URL or HTML documents. It utilizes DOM, CSS and Jquery-like systems for concentrating and controlling records.

Bài Viết Liên Quan

Chủ Đề