LoginSignup
10
3

More than 3 years have passed since last update.

Swiftで指定したURLからHTMLのソースコードを取得する

Posted at

はじめに

Swiftで指定したURLのページからHTMLを取得する方法についてのメモです。
コンソールアプリとして作成しましたが、処理自体は流用できるのでiOSアプリやmacOSのアプリケーションにも組み込むことが出来るのではないかと思います。

コード

入力した文字列をURLに変換する

キーボードからreturnキーが押下されるまでを文字列を入力します。
returnキーを押下すると、文字列の末尾に改行文字が入ってしまうので空文字に置き換えます。

main.swift
// プログラムの開始
print("URLを入力: ");
// キーボードから return キーが押下されるまで読み込む
let standardInput: FileHandle = FileHandle.standardInput;
// 入力された情報を文字列にする(UTF-8で文字列を生成する。)
var inputString: String = String(data: standardInput.availableData, encoding: String.Encoding.utf8)!;

// 入力した文字列から改行文字を空文字に置き換える
let replaceString = inputString.replacingOccurrences(of: "\n", with: "");

// 入力したURLからHTMLのソースを取得する。
let targetURL: URL = URL(string: replaceString)!;

指定したURLからHTMLを取得

あとは、URLをStringに渡してHTMLを取得します。
HTMLを取得できない場合や、URLが誤っている場合などで例外が発生する為
例外処理を入れてあります。

main.swift
do {
    // 入力したURLのページから、HTMLのソースを取得する。
    let sourceHTML: String = try String(contentsOf: targetURL, encoding: String.Encoding.utf8);
    print("取得したHTMLのソースは以下です。↓\n" + sourceHTML);
}
catch {
    // 何かしらのエラーが発生した。
    print("エラーが発生しました。");
}

コード全体

コード全体は以下の通りです。

main.swift
import Foundation


// プログラムの開始
print("URLを入力: ");
// キーボードから return キーが押下されるまで読み込む
let standardInput: FileHandle = FileHandle.standardInput;
// 入力された情報を文字列にする(UTF-8で文字列を生成する。)
var inputString: String = String(data: standardInput.availableData, encoding: String.Encoding.utf8)!;

// 入力した文字列から改行文字を空文字に置き換える
let replaceString = inputString.replacingOccurrences(of: "\n", with: "");

// 入力したURLからHTMLのソースを取得する。
let targetURL: URL = URL(string: replaceString)!;
do {
    // 入力したURLのページから、HTMLのソースを取得する。
    let sourceHTML: String = try String(contentsOf: targetURL, encoding: String.Encoding.utf8);
    print("取得したHTMLのソースは以下です。↓\n" + sourceHTML);
}
catch {
    // 何かしらのエラーが発生した。
    print("エラーが発生しました。");
}
10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3