프로그래밍/Swift(IOS & Mac)
[swift html parser] 딴지일보 자유게시판 본문 읽어오기
낼은어떻게
2016. 4. 12. 21:09
본문 리스트를 클릭하면 해당 내용을 웹뷰에 보여는 소스를 만들고 있습니다. 그 일부분입니다.
일단 딴지일보 자유게시판본문 내용을 보면 필요없는 부분들이 있어서 그것을 날려버리고필요한부분만 배열에넣는 코드입니다.
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 |
요렇게 나타납니다.... 본문 내용만 출력이 됩니다.....
나중에 요것을 웹뷰에다 올리면 되는 것이지영... 다만 문제가 이미지 크기인뎅.. 자동으로 모바일 사이즈로 변경하는 방법을 공부해야 할듯합니다.