如何使用 RxSwift 获取分页页面的所有页面 url
How to get all page url of a paginated page with RxSwift
我正在开始我的第一个 RxSwift 项目。
我想要此页的所有分页 url : http://mangafox.me/directory/
至此,我可以获取到下一页url。
这是到目前为止使用的代码:
func getNextPageUrl(currentStringUrl: String) -> Observable<String> {
return Observable.create { observer -> Disposable in
let request = Alamofire.request(currentStringUrl)
.validate()
.responseString { response in
if response.result.isSuccess {
if let doc = HTML(html: response.result.value!, encoding: .utf8) {
if let nextPage = doc.css("a > span.next").first?.parent {
observer.onNext("\(currentStringUrl)\(nextPage["href"]!)")
}
}
observer.onCompleted()
}else{
observer.onError(response.result.error!)
}
}
return Disposables.create {
request.cancel()
}
}
}
现在我想做一个其他下一个分页的字符串列表link。我该怎么做?
我找到了自己的方法:
func getAllMangaPage() -> Observable<String>{
return Observable.create { observer in
var urls :[String] = []
let subs = self.repeatEvery(second: 0.2)
.subscribe { event in
if urls.isEmpty {
urls.append(self.popularMangaInitialUrl())
}else{
self.getNextPageUrl(currentStringUrl: urls.last!)
.subscribe(
onNext: { url in
var nextUrl = url as String
if !nextUrl.contains("http://") {
let completeUrl = "\(self.popularMangaInitialUrl())\(nextUrl)"
if !urls.contains(completeUrl){
urls.append("\(self.popularMangaInitialUrl())\(nextUrl)")
observer.onNext(urls.last!)
}
}else{
if !urls.contains(nextUrl){
urls.append(nextUrl)
observer.onNext(urls.last!)
}
}
},
onCompleted: {
},
onDisposed: {
}
)
}
}
return Disposables.create {
print("Disposed")
subs.dispose()
}
}
}
我正在开始我的第一个 RxSwift 项目。
我想要此页的所有分页 url : http://mangafox.me/directory/ 至此,我可以获取到下一页url。 这是到目前为止使用的代码:
func getNextPageUrl(currentStringUrl: String) -> Observable<String> {
return Observable.create { observer -> Disposable in
let request = Alamofire.request(currentStringUrl)
.validate()
.responseString { response in
if response.result.isSuccess {
if let doc = HTML(html: response.result.value!, encoding: .utf8) {
if let nextPage = doc.css("a > span.next").first?.parent {
observer.onNext("\(currentStringUrl)\(nextPage["href"]!)")
}
}
observer.onCompleted()
}else{
observer.onError(response.result.error!)
}
}
return Disposables.create {
request.cancel()
}
}
}
现在我想做一个其他下一个分页的字符串列表link。我该怎么做?
我找到了自己的方法:
func getAllMangaPage() -> Observable<String>{
return Observable.create { observer in
var urls :[String] = []
let subs = self.repeatEvery(second: 0.2)
.subscribe { event in
if urls.isEmpty {
urls.append(self.popularMangaInitialUrl())
}else{
self.getNextPageUrl(currentStringUrl: urls.last!)
.subscribe(
onNext: { url in
var nextUrl = url as String
if !nextUrl.contains("http://") {
let completeUrl = "\(self.popularMangaInitialUrl())\(nextUrl)"
if !urls.contains(completeUrl){
urls.append("\(self.popularMangaInitialUrl())\(nextUrl)")
observer.onNext(urls.last!)
}
}else{
if !urls.contains(nextUrl){
urls.append(nextUrl)
observer.onNext(urls.last!)
}
}
},
onCompleted: {
},
onDisposed: {
}
)
}
}
return Disposables.create {
print("Disposed")
subs.dispose()
}
}
}