Java
 Computer >> コンピューター >  >> プログラミング >> Java

WebページのコンテンツをJavaの文字列に読み込む方法は?


Javaを使用して、いくつかの方法でWebページのコンテンツを読み取ることができます。ここでは、そのうちの3つについて説明します。

openStream()メソッドの使用

URL java.netパッケージのクラスは、ワールドワイドウェブ内のリソース(ファイル、ディレクトリ、または参照)を指すために使用されるUniformResourceLocatorを表します。

openStream() このクラスのメソッドは、現在のオブジェクトによって表されるURLへの接続を開き、URLからデータを読み取ることができるInputStreamオブジェクトを返します。

したがって、(URLクラスを使用して)Webページからデータを読み取るには-

  • 目的のWebページのURLをパラメーターとしてコンストラクターに渡すことにより、java.net.URLクラスをインスタンス化します。

  • openStream()メソッドを呼び出し、InputStreamオブジェクトを取得します。

  • 上記で取得したInputStreamオブジェクトをパラメーターとして渡して、Scannerクラスをインスタンス化します。

import java.io.IOException;
import java.net.URL;
import java.util.Scanner;
public class ReadingWebPage {
   public static void main(String args[]) throws IOException {
      //Instantiating the URL class
      URL url = new URL("https://www.something.com/");
      //Retrieving the contents of the specified page
      Scanner sc = new Scanner(url.openStream());
      //Instantiating the StringBuffer class to hold the result
      StringBuffer sb = new StringBuffer();
      while(sc.hasNext()) {
         sb.append(sc.next());
         //System.out.println(sc.next());
      }
      //Retrieving the String from the String Buffer object
      String result = sb.toString();
      System.out.println(result);
      //Removing the HTML tags
      result = result.replaceAll("<[^>]*>", "");
      System.out.println("Contents of the web page: "+result);
   }
}

出力

<html><body><h1>Itworks!</h1></body></html>
Contents of the web page: Itworks!

HttpClientの使用

Httpクライアントは転送ライブラリであり、クライアント側に常駐し、HTTPメッセージを送受信します。最近のHTTP標準を満たす、最新の機能豊富で効率的な実装を提供します。

(Httpプロトコルの)GET要求は、指定されたURIを使用して指定されたサーバーから情報を取得するために使用されます。 GETを使用するリクエストは、データのみを取得する必要があり、データに他の影響を与えることはありません。

HttpClient APIは、getrequestメソッドを表すHttpGetという名前のクラスを提供します。 GETリクエストを実行し、Webページのコンテンツを取得するには-

  • createDefault() HttpClientsクラスのメソッドは、HttpClientインターフェイスの基本実装であるCloseableHttpClientオブジェクトを返します。このメソッドを使用して、HttpClientオブジェクトを作成します。

  • HttpGetクラスをインスタンス化して、HTTPGETリクエストを作成します。このクラスのコンストラクターは、リクエストの送信先となるWebページのURIを表す文字列値を受け入れます。

  • execute()を呼び出して、HttpGetリクエストを実行します。 メソッド。

  • 応答からWebサイトのコンテンツを表すInputStreamオブジェクトを-

    として取得します。
httpresponse.getEntity().getContent()

import java.util.Scanner;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class HttpClientExample {
   public static void main(String args[]) throws Exception{
      //Creating a HttpClient object
      CloseableHttpClient httpclient = HttpClients.createDefault();
      //Creating a HttpGet object
      HttpGet httpget = new HttpGet("https://www.something.com/");
      //Executing the Get request
      HttpResponse httpresponse = httpclient.execute(httpget);
      Scanner sc = new Scanner(httpresponse.getEntity().getContent());
      //Instantiating the StringBuffer class to hold the result
      StringBuffer sb = new StringBuffer();
      while(sc.hasNext()) {
         sb.append(sc.next());
         //System.out.println(sc.next());
      }
      //Retrieving the String from the String Buffer object
      String result = sb.toString();
      System.out.println(result);
      //Removing the HTML tags
      result = result.replaceAll("<[^>]*>", "");
      System.out.println("Contents of the web page: "+result);
   }
}

出力

<html><body><h1>Itworks!</h1></body></html>
Contents of the web page: Itworks!

Jsoupライブラリの使用

Jsoupは、HTMLベースのコンテンツを処理するJavaベースのライブラリです。 DOM、CSS、jqueryに似た最高のメソッドを使用して、データを抽出および操作するための非常に便利なAPIを提供します。 WHATWG HTML5仕様を実装し、HTMLを最新のブラウザと同じDOMに解析します。

Jsoupライブラリを使用してWebページのコンテンツを取得するには-

  • connect() Jsoupクラスのメソッドは、WebページのURLを受け入れ、指定されたWebページに接続して、接続オブジェクトを返します。 connect()を使用して目的のWebページに接続します メソッド。

  • Connectionインターフェースのget()メソッドは、GET要求を送信/実行し、HTMLドキュメントをDocumentクラスのオブジェクトとして返します。 get()メソッドを呼び出して、ページにGETリクエストを送信します。

  • 取得したドキュメントの内容を-

    として文字列に取得します
String result = doc.body().text();

import java.io.IOException;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupExample {
   public static void main(String args[]) throws IOException {
      String page = "https://www.something.com/";
      //Connecting to the web page
      Connection conn = Jsoup.connect(page);
      //executing the get request
      Document doc = conn.get();
      //Retrieving the contents (body) of the web page
      String result = doc.body().text();
      System.out.println(result);
   }
}

出力

It works!

  1. JavaでCSVファイルからデータを読み取る方法は?

    CSV カンマ区切り値の略です 。 CSVファイルでは、各行にカンマ(、)で区切られた単語が含まれています そしてそれは 。csvとともに保存されます 拡張機能。 readLine()を使用して、CSVファイルを1行ずつ読み取ることができます BufferedReaderのメソッド クラス。各行をコンマ文字で分割して、その行の単語を配列に入れます。これで、配列を反復処理するか、適切なインデックスを使用して、配列の内容を簡単に印刷できます。 CSVファイル 例 import java.io.*; public class CSVReaderTest {    p

  2. Javaのプロパティファイルからデータを読み取る方法は?

    プロパティ はHashtableクラスのサブクラスであり、プロパティの永続的なセットを表します。 プロパティ ストリームに保存することも、ストリームからロードすることもできます。プロパティリストの各キーとそれに対応する値は文字列です。 プロパティ ファイルをJavaで使用して、構成を外部化し、キーと値のペアを保存できます。 。 Properties.load()メソッド ofPropertiesクラスはロードに便利です。プロパティ key-valueの形式のファイル ペア 。 構文 public class Properties extends Hashtable credential