###前提・実現したいこと
Webサイトのデータをスクレイピングするコードを書きたい。
(ターゲットのWebサイトは社内イントラネット。諸般の事情で当該サイトからcsvやその他の方法でデータ連携はできないため、スクレイピングでのデータ取得を検討中)
###質問したいこと
Javascriptでページを動的生成しているサイトの場合、どのような方法が考えられるか?
ググる場合のキーワードなどを教えていただければ幸いです。
###試したこと
下記を参考にコードを記載したが、静的htmlで記載されたhtmlファイルは取得できたが、動的に生成している部分は取得できなかった。
https://ja.stackoverflow.com/questions/33522/swift3-モバイルサイトのhtmlデータ-取得方法について
コードのみ ※ほぼ上記サイトそのまま
let siteUrl: String = "http://intrasite.xxx.co.jp/a/b/c/index.html" override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. getHtmlDataAsync(url: siteUrl) {html in //code print(html) //for debug. ←ココで取得したhtmlを見ると動的生成部分は含まれない } } //###非同期処理を書くのは、完了ハンドラーパターンが簡単 func getHtmlDataAsync(url: String, completion: @escaping(String)->Void) { let request = URLRequest(url: URL(string: url)!) let task = URLSession.shared.dataTask(with: request) {data, response, error in if let error = error { completion("<error>"+error.localizedDescription+"</error>") return } guard let data = data else { //###ここを通ることはないはず completion("<error>data nil</error>") return } let html = String(data: data, encoding: .shiftJIS) ?? "bad encoding" completion(html) } task.resume() }
###補足情報(言語/FW/ツール等のバージョンなど)
使用言語はswift3,プラットフォームはiPhone(iOS)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/16 00:59