Posted at

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


はじめに

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("エラーが発生しました。");
}