Fly to the sky & Return

[swift html parser] 딴지 자유게시판 파씽... 1차 완성.. 본문

프로그래밍/Swift(IOS & Mac)

[swift html parser] 딴지 자유게시판 파씽... 1차 완성..

낼은어떻게 2016. 3. 23. 13:27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1차 작업을 완료하였습니다..  

코드는 다음과 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import UIKit
import Kanna
 
class ViewController: UIViewController {
   
 
    @IBAction func test(sender: AnyObject) {
        
        var list = Array<XMLElement>()
        var list2 = Array<XMLElement>()
        var list_data = Array<String>()
        var list_data2 = Array<String>()
 
        
        let apiURI = NSURL(string: "http://www.ddanzi.com/free")
        
        let apidata : NSData = NSData(contentsOfURL: apiURI!)!
        if let doc = Kanna.HTML(html: apidata, encoding: NSUTF8StringEncoding) {
           
            for data in  doc.xpath("//td") {
            
                list.append(data)
                
            }
            
            for data1 in list {
                if let a = data1.text {
                    
                    var link3 = String(a) // <- xml -> string
                    var trimmedString = link3.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())   // 문자열 앞 \t 제거
                     trimmedString = trimmedString.stringByReplacingOccurrencesOfString("\t", withString:  "", options: NSStringCompareOptions.LiteralSearch, range: nil) // 문자열 중간 \t 제거
                    
                    let link4 = trimmedString.stringByReplacingOccurrencesOfString("\n", withString:  "", options: NSStringCompareOptions.LiteralSearch, range: nil)  //  '\n' 제거
                    
                    list_data.append(link4)
                    
                }
                
                
            }
            
            for data3 in doc.xpath("//td/a") {
                list2.append(data3)
            }
            
            for data2 in list2 {
            
                if let a = data2["href"] {
                    var link3 = String(a)
                    
                    let fullNameArr = link3.characters.split{$0 == "#"}.map(String.init)
                      //href 태그중에 본문 링크를 제외한 링크를 제거하는 코드
                    if fullNameArr.count == 1 {
                        if fullNameArr[0!= "popup_menu_area" {
                            list_data2.append(a)
                        }
                    } else if fullNameArr.count == 2 {
                        if fullNameArr[1!= "comment" {
                          list_data2.append(a)
                        }
                    }
                }
            }
            // 번호, 제목, 작성자, 일자, 클릭수, 추천  ....  이렇게 6번 씩 반복되는 코드
            for i in 0..<list_data.count/6 {
            
                for j in 0..<6 {
                   print(list_data[6*+ j])
                    if j == 1 {
                        print(list_data2[i])  // 본문 href 링크
                    }
                    
                    
                }
                
                print("--------")
            }
            
        }
    }
}
 
 
 
 
cs

결과물은 다음과 같습니다.


공지

[딴지라디오] 본게방 Ep29(1) 현직 흑역사 궁상방송! 또다시 선거철.[42]

http://www.ddanzi.com/free/83895099

호요요

2016.03.22

2899

7

--------


순서대로 보자면..    


글번호

제목

분문 링크

작성자

작성일

클릭수

추천수


요렇게 됩니당.


다음 작업은 table view에 필요한 부분이 보여지고 클릭시에 해당 글 내용으로 넘어가는 작업을 할 계획입니다.