iOS上でHTMLパーサでスクレイピング [プログラミング]
ちょっとiPhoneで作りたいアプリがあったので調べた。
HTMLからスクレイピングをしたいと思っていた。
https://qiita.com/_tid_/items/c228b1931cd9b23d52d3
Kannaというもので使えるっぽい。CocoaPodsで楽できそうだけど
問題がありそうなのでCarthageで入れるのがいいのかも。
これでimgタグのURLを取ってきてファイル表示すればOKかも。
相対URLのは先のもので変換してね。
って書いてあったから
でいいのかもね。
おなじかもしれんけどこれもね。
https://qiita.com/yogita109/items/977e5c0e8d40795748d8
Alamofireとかあるらしいけど、標準で用意されているっていうんだから、それを使ったほうがいい気はする。でも、気楽に書きたい気もするなぁ。だが依存するライブラリは少ない方がいいに決まっている。
・URLを相対パスから絶対パスへ。
これはHTMLから相対パスをスクレイピングした時に必要だな。
・URLSessionを使ってファイルを取る。
https://qiita.com/shungo_m/items/64564fd822a7558ac7b1
最後にスクレイピングするファイルを取ってきたり、スクレイピングされたURLを取ってきたりするのに使う。これが一番最初な気もするけど、まぁいいか。
まずSwiftUIで二分割したウインドウをどう連携させるかというのが必要かな。でも、正直SwiftUIに対する情報が少なすぎるというのが厳しい。
HTMLからスクレイピングをしたいと思っていた。
https://qiita.com/_tid_/items/c228b1931cd9b23d52d3
Kannaというもので使えるっぽい。CocoaPodsで楽できそうだけど
問題がありそうなのでCarthageで入れるのがいいのかも。
これでimgタグのURLを取ってきてファイル表示すればOKかも。
相対URLのは先のもので変換してね。
// HTML内のリンク(URL)を抜き出す for node in doc!.css("a, link") { println(node["href"]) // href属性に設定されている文字列を出力 }
って書いてあったから
// HTML内のリンク(URL)を抜き出す for node in doc!.css("img, link") { println(node["href"]) // href属性に設定されている文字列を出力 }
でいいのかもね。
おなじかもしれんけどこれもね。
https://qiita.com/yogita109/items/977e5c0e8d40795748d8
Alamofireとかあるらしいけど、標準で用意されているっていうんだから、それを使ったほうがいい気はする。でも、気楽に書きたい気もするなぁ。だが依存するライブラリは少ない方がいいに決まっている。
・URLを相対パスから絶対パスへ。
URL url=new URL("http://www.abc.com/aa/bb/cc/file.html"); String relativePath="../file2.html"; //maybe is "/file3.html" new URL(url, relativePath);
これはHTMLから相対パスをスクレイピングした時に必要だな。
・URLSessionを使ってファイルを取る。
https://qiita.com/shungo_m/items/64564fd822a7558ac7b1
let url = URL(string: "https://hogehoge.hoge")! //URLを生成 var request = URLRequest(url: url) //Requestを生成 let task = URLSession.shared.dataTask(with: request) { (data, response, error) in //非同期で通信を行う guard let data = data else { return } do { let object = try JSONSerialization.jsonObject(with: data, options: []) // DataをJsonに変換 print(object) } catch let error { print(error) } } task.resume()
最後にスクレイピングするファイルを取ってきたり、スクレイピングされたURLを取ってきたりするのに使う。これが一番最初な気もするけど、まぁいいか。
まずSwiftUIで二分割したウインドウをどう連携させるかというのが必要かな。でも、正直SwiftUIに対する情報が少なすぎるというのが厳しい。
コメント 0