Привет, господа!
Есть у нас сайт новостей http://www.glunews.ru/news/?page=0
Мы хотим распарсить все-все новости, то есть надо page=0 менять на 0…351.
Так вот, как это лучше всего сделать?
Спасибо!
Привет, господа!
Есть у нас сайт новостей http://www.glunews.ru/news/?page=0
Мы хотим распарсить все-все новости, то есть надо page=0 менять на 0…351.
Так вот, как это лучше всего сделать?
Спасибо!
С картинки набирать как то не горю желанием)
Ваш вопрос не совсем понятен.
В хотите парсить все страницы сразу?
Или вам не понятно как поменять номер страницы?
Можно сделать вызов NSURLSession в цикле for. Он по очереди будет выводить html каждой страницы. Но увы, менять кол-во итераций не получится
А зачем? Ведь не все страницы разом показываются, от этого логичней - открыл страницу загрузил данные
Обычно так и делают и загруженные в кеш добавляют. Не кто не любит ждать по пол часа, пока все страницы загрузятся)
Ты в точку! Мне не особо понятно, как парсить все сразу и поменять номер страницы
впишите текст сюда; также, отключить форматирование текста можно, начав строку с четырех пробелов
впишите текст сюда; также, отключить форматирование текста можно, начав строку с четырех пробелов
class ViewController: UIViewController {
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
displayURL()
}
func displayURL() {
let myUrlAdress = "http://www.glunews.ru/news/?page=0"
let myUrl = NSURL(string: myUrlAdress)
let UrlTask = NSURLSession.sharedSession().dataTaskWithURL(myUrl!) {
myData, response, error in
guard error == nil else {return}
let stringHTML = String(data: myData! , encoding: NSUTF8StringEncoding)
self.webView.loadHTMLString(stringHTML! , baseURL: nil)
// если хотим полный код страницы
//print(stringHTML)
if let doc = Kanna.HTML(html: stringHTML!, encoding: NSUTF8StringEncoding) {
print(doc.title)
for link in doc.css("a, div") {
print(link.text)
// print(link["href"])
}
}
}
UrlTask.resume()
}
}
Я вам не советую грузить все страницы сразу, но если сильно хочется то как то так:
func displayURL(pageCount: Int) {
let group = dispatch_group_create()
var result: [String] = []
for i in 0..<pageCount {
dispatch_group_enter(group)
let myUrlAdress = "http://www.glunews.ru/news/?page=\(i)"
let myUrl = NSURL(string: myUrlAdress)
let UrlTask = NSURLSession.sharedSession().dataTaskWithURL(myUrl!) { myData, response, error in
let stringHTML = String(data: myData! , encoding: NSUTF8StringEncoding)!
result.append(stringHTML)
dispatch_group_leave(group)
}
UrlTask.resume()
}
dispatch_group_notify(group, dispatch_get_main_queue()) {
print(result)
}
}