Fly to the sky & Return

[swift html parser] 딴지일보 자유게시판 본문 읽어오기 본문

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

[swift html parser] 딴지일보 자유게시판 본문 읽어오기

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

본문 리스트를 클릭하면 해당 내용을 웹뷰에 보여는 소스를 만들고 있습니다. 그 일부분입니다.


일단  딴지일보 자유게시판본문 내용을 보면 필요없는 부분들이 있어서 그것을 날려버리고필요한부분만 배열에넣는 코드입니다.


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
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>()
        var a = NSData()
        
        var b = NSString()
        
 
        var page = 1
        let apiURI = NSURL(string: "http://www.ddanzi.com/index.php?mid=free&document_srl=86086527&m=0")
        
        let apidata : NSData = NSData(contentsOfURL: apiURI!)!
        
        if let doc = Kanna.HTML(html: apidata, encoding: NSUTF8StringEncoding) {
            var i = 1
            for data in  doc.xpath("//article/div") {
              
                list.append(data)
               
            
            }
            
          
            for value in 0...1 {
                if value == 1 {
                    if let a = list[1].innerHTML {
                        list_data.append(a)
                    }
                }
            }
            
            let line = list_data.joinWithSeparator(" ")
 
           //본문 하단 필요없는 부분 찾아내는 코드
            var result = line.rangeOfString("<!--After",
                                            options: NSStringCompareOptions.LiteralSearch,
                                            range: line.startIndex..<line.endIndex,
                                            locale: nil)
            
            
            if let range = result {
             
              
                var start = range.startIndex
            
               var beforeStart = start.predecessor()
                
                list_data2.append(line[line.startIndex..<beforeStart])
            }
            
            let line2 = list_data2.joinWithSeparator(" ")
            
            print(line2)
 
        }
        
    }
 
}
 
 
 
 
 
cs


결과값은 



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
 
 
<!--BeforeDocument(86086527,10423462)--><div class="document_86086527_10423462 xe_content">
<img src="http://cdn.ddanzi.com/201603-images/86086528.jpg" alt="강제출력된 이미지입니다." border="0"><p> </p>
 
<p> </p>
 
<p>부산에 외근다녀오다 길 잃어서 용궁사 다녀왔어요-</p>
 
<p> </p>
 
<p> </p>
 
<p> </p>
 
<p> </p>
 
<p> </p>
 
<p> </p>
 
<p> </p>
 
<p>*용궁사 안 팔아요</p>
</div>
 
 
 
cs


요렇게 나타납니다....     본문 내용만 출력이 됩니다.....    


나중에 요것을 웹뷰에다 올리면 되는 것이지영...    다만 문제가  이미지 크기인뎅..  자동으로 모바일 사이즈로 변경하는 방법을 공부해야 할듯합니다.