前提・実現したいこと
Swift(iOS)でHTML内の要素<p>タグを複数取得するソフトウェアを作っています。
JiやKannaなどのライブラリで実装中に以下の問題が発生しました。
発生している問題
JiやKannaでは最初の要素、例えば「<p>内容</p>」で「内容」は問題なく取得できるのですが、 「<p>内容</p><p>内容2</p><p>内容3</p>」 となっていた場合に、内容2や内容3を取る方法が分かりません。 node.firstで最初の要素は取れます。しかし二番目以降の要素の取り方がわからず困っております。 何卒ご教示宜しくお願いいたします。
該当のソースコード
Swift
1 /// スクレイピング 2 func parseHtml(data: Data) -> String? { 3 // KannaでHTMLDocumentを生成 4 guard let doc = HTML(html: data, encoding: String.Encoding.utf8) else { 5 fatalError("Error: HTML") 6 } 7 var retData: String? = "" 8 // HTMLの<table>の時刻の列を基準にLoopし、該当行の気温の列をKannaでスクレイピング 9 let node = doc.xpath("//p[@class='text']") 10 if let nodeFirst = node.first, var content:String? = nodeFirst.content { 11 // 値が入っている場合のみ取得 12 retData = content! 13 return retData! 14 } 15 return retData! 16 } 17
試したこと
JiやKannaのライブラリ自体の内容を書き換えようとしたのですが、該当箇所が見つかりませんでした。
また、外側の大きなタグから本文を取得すると、余計な文章が入ったり、記事によってはタグが違って
取得できなかったりしました。
補足情報(FW/ツールのバージョンなど)
Swift3.0で開発しております。
Xcode9で、Kannna、Jiともに最新版です。
とにかく配列などで<p>タグを全部取得したいです。
最終的には文字列で結合したいと思っております。
どうかご教示宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/20 10:13