前提・実現したいこと
お世話になります。
ログインが必要なページでのWebスクレイピングは、Swift4ではどのように実現すれば良いのでしょうか?(例えば、ヤフーのホームページにログインし、ログイン後の情報を取得する方法)
ちなみに、ログインの必要のないページは、Kannaというフレームワークを使ってスクレイピングする事ができています。
どなたかわかる方がいましたら、ご教授いただけないでしょうか?
よろしくお願いいたします。
試したこと
以前同じような質問をした方がいたので、この回答を参考に試しました。
https://teratail.com/questions/35792
しかしながら、この回答は恐らくswift2を前提に回答されていたので、
swiift4で実行するとエラーが出てしまいます。
Xcodeの自動修正機能を使っても修正仕切れない部分があります。
以前の回答(swift2前提)
swift2
1/** クッキーを取得 これだけでWebViewのCookieの取得が可能です*/ 2 let storage = HTTPCookieStorage.shared 3 4 /** クッキーのURL 例えば http://www.yahoo.co.jp/など */ 5 let domain = NSURL(string: "スクレイピングしてくるURL") 6 7 // 取得先のURL 8 let scrapingURL = NSURL(string: "該当のページURL") 9 10 // Request 11 let request = NSMutableURLRequest(url: scrapingURL! as URL) 12 13 // Cookieをセットして実際にスクレイピングする 14 if let cookie = storage.cookies(for: domain! as URL){ 15 let header = HTTPCookie.requestHeaderFields(with: cookie) 16 request.allHTTPHeaderFields = header 17 var data = NSURLConnection.sendSynchronousRequest(request, returningResponse:nil, error:nil) 18 }
Xcodeで自動修正後
swift4
1 /** クッキーを取得 これだけでWebViewのCookieの取得が可能です*/ 2 let storage = HTTPCookieStorage.shared 3 4 /** クッキーのURL 例えば http://www.yahoo.co.jp/など */ 5 let domain = NSURL(string: "スクレイピングしてくるURL") 6 7 // 取得先のURL 8 let scrapingURL = NSURL(string: "該当のページURL") 9 10 // Request 11 let request = NSMutableURLRequest(url: scrapingURL! as URL) 12 13 // Cookieをセットして実際にスクレイピングする 14 if let cookie = storage.cookies(for: domain! as URL){ 15 let header = HTTPCookie.requestHeaderFields(with: cookie) 16 request.allHTTPHeaderFields = header 17 var data = NSURLConnection.sendSynchronousRequest(request, returningResponse:nil, error:nil) 18 }
よろしくお願いします。