iOS

【iOS/Swift】Alamofire × Kanna でスクレイピングしてみた

2022年7月25日

目次Category


こんにちは!2022年4月に新卒入社した大石です。
専門学校を卒業し、iOSアプリを作りたい!という思いからYAZに入社しました。

在学中にアプリ開発を始め、今も個人開発を進めながら勉強中です!

今回はアプリ開発初心者の、
オリジナルアプリを開発したい!or  ポートフォリオを作りたい!
という方にお勧めのライブラリ AlamofireKanna についてご紹介します。

スクレイピングとは

今回行うのはWebスクレイピングです。Webスクレイピングとは、
Webサイトで公開されている情報を取得し、必要な部分を抽出することです。
ショッピングサイトや宿泊サイトでの価格やレビューの比較に用いられることが多いです。
※対象のWebサイトの利用規約やアクセス制限を確認して、
利用用途やアクセス頻度等の制限を遵守しましょう。

環境&導入

  • Swift 5.6.1
  • Xcode 13.4.1
  • UIKit

Alamofire, Kanna ともに CocoaPods, Carthage, SwiftPMで導入できます。
詳しくは各リポジトリをご確認ください。
Alamofire : https://github.com/Alamofire/Alamofire
Kanna      : https://github.com/tid-kijyun/Kanna

実装

今回は弊社YAZのホームページの新卒採用の募集要項をスクレイピングしようと思います。

実行!

Simulatorで起動しました!

解説

大まかな流れは、

1.AlamofireでHTTP通信のレスポンスを取得する

2.クロージャ内のレスポンスをKannaでHTMLDocumentオブジェクト化
                            &パースして情報の抽出


3.TableViewに表示  といった流れになっています。

今回はパースする際に必要な情報の箇所のXpathを利用しています(今回は省略形を用いました)。
Xpathはブラウザの開発者ツールから取得できます!

Xpathを指定して要素を取得するほか、CSSで指定する方法もあります。
詳しくはKannaのREADMEをご覧ください!

注意!

冒頭にも記述しましたが、現行のWebサービス等を対象に行うアプリを作る際は、
利用規約やアクセス制限を確認して、利用用途やアクセス頻度等の制限を遵守しましょう!

また、今回は即席のプロジェクトということで割愛しましたが、実際にアプリを作る際は
Alamofireの通信エラーのハンドリングKannaのパースエラーのハンドリングの検討が必要です。

まとめ

今回はAlamofireとKannaを用いたスクレイピングについてご紹介しました。
作れるアプリの幅が広がるため、初心者にオススメだと思います。
参考にしていただければ幸いです。

技術ブログ初投稿でした!
これからも自分の学びや技術の引き出しを記事にしていきたいと考えています。

この記事を書いた人

大石

大石

2022年にエンジニアとして新卒入社しました。
iOSアプリ開発とハイボールが好きです。