diff --git a/pom.xml b/pom.xml index bbc2bc53..ab4da6c8 100644 --- a/pom.xml +++ b/pom.xml @@ -136,6 +136,13 @@ 1.0.0 + + + org.jsoup + jsoup + 1.21.2 + + cokr.xit.base xit-crypto diff --git a/src/main/java/externalsystem/testpool/web/TestPoolController.java b/src/main/java/externalsystem/testpool/web/TestPoolController.java index 4a89de7b..6f5312b3 100644 --- a/src/main/java/externalsystem/testpool/web/TestPoolController.java +++ b/src/main/java/externalsystem/testpool/web/TestPoolController.java @@ -1,11 +1,21 @@ package externalsystem.testpool.web; +import java.util.ArrayList; +import java.util.List; + import javax.annotation.Resource; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.nodes.TextNode; +import org.jsoup.select.Elements; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; +import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.web.AbstractController; import externalsystem.testpool.RandomUtil; import externalsystem.testpool.dao.TestPoolMapper; @@ -43,4 +53,103 @@ public class TestPoolController extends AbstractController { return mav; } + @RequestMapping(name="제주도 렌트카 업체 정보 크롤링", value="/jejuRent.do") + public ModelAndView jejuRent() throws Exception { + + ModelAndView mav = new ModelAndView("jsonView"); + + String site = "https://bizno.net"; + String listSearch = "/상호명으로사업자등록번호조회"; + List detailUrls = new ArrayList(); + List rentEntInfos = new ArrayList(); + + Document XM = Jsoup.connect(site+listSearch) + .data("area","제주","query","렌트카") + .get(); + Elements titles1 = XM.getElementsByTag("body").get(0).getElementsByClass("titles"); + for(Element title : titles1) { + String detailUrl = site+title.getElementsByTag("a").get(0).attr("href"); + detailUrls.add(detailUrl); + } + + Document XJ = Jsoup.connect(site+listSearch) + .data("area","제주","query","렌터카") + .get(); + Elements titles2 = XJ.getElementsByTag("body").get(0).getElementsByClass("titles"); + for(Element title : titles2) { + String detailUrl = site+title.getElementsByTag("a").get(0).attr("href"); + detailUrls.add(detailUrl); + } + + for(String detailUrl : detailUrls) { + Document detail = Jsoup.connect(detailUrl).get(); + String entName = detail.getElementsByTag("h1").get(0).text(); + Element table = detail.getElementsByClass("table_guide01").get(0); + + String sa = table.getElementsContainingOwnText("사업자등록번호").next().text(); + String beob = table.getElementsContainingOwnText("법인등록번호").next().text(); + String tel = table.getElementsContainingOwnText("전화번호").next().text(); + String fax = table.getElementsContainingOwnText("팩스번호").next().text(); + String mail = table.getElementsContainingOwnText("회사이메일").next().text(); + String daepyo = table.getElementsContainingOwnText("대표자명").next().text(); + String postNo = table.getElementsContainingOwnText("우편번호").next().text(); + String juso = table.getElementsContainingOwnText("회사주소").next().text(); + + + DataObject rentEntInfo = new DataObject(); + rentEntInfo.put("기업명", entName); + rentEntInfo.put("사업자등록번호", sa); + rentEntInfo.put("법인등록번호", beob); + rentEntInfo.put("전화번호", tel); + rentEntInfo.put("팩스번호", fax); + rentEntInfo.put("회사이메일", mail); + rentEntInfo.put("대표자명", daepyo); + rentEntInfo.put("우편번호", postNo); + rentEntInfo.put("회사주소", juso); + + rentEntInfos.add(rentEntInfo); + } + mav.addObject("result", rentEntInfos); + + return mav; + } + + @RequestMapping(name="(주)제주렌트카 정보 크롤링", value="/jejuRent2.do") + @ResponseBody + public String jejuRent2() throws Exception { + + Document detail = Jsoup.connect("https://bizno.net/article/6168101496").get(); + String entName = detail.getElementsByTag("h1").get(0).text(); + Element table = detail.getElementsByClass("table_guide01").get(0); + + String sa = table.getElementsContainingOwnText("사업자등록번호").next().text(); + String beob = table.getElementsContainingOwnText("법인등록번호").next().text(); + String tel = table.getElementsContainingOwnText("전화번호").next().text(); + String fax = table.getElementsContainingOwnText("팩스번호").next().text(); + String mail = table.getElementsContainingOwnText("회사이메일").next().text(); + String daepyo = table.getElementsContainingOwnText("대표자명").next().text(); + String postNo = table.getElementsContainingOwnText("우편번호").next().text(); + + List tns = table.getElementsContainingOwnText("회사주소").next().textNodes(); + List juso = new ArrayList(); + for(TextNode tn : tns) { + juso.add(tn.text()); + } + + + DataObject rentEntInfo = new DataObject(); + rentEntInfo.put("기업명", entName); + rentEntInfo.put("사업자등록번호", sa); + rentEntInfo.put("법인등록번호", beob); + rentEntInfo.put("전화번호", tel); + rentEntInfo.put("팩스번호", fax); + rentEntInfo.put("회사이메일", mail); + rentEntInfo.put("대표자명", daepyo); + rentEntInfo.put("우편번호", postNo); + rentEntInfo.put("회사주소", juso); + + return toJson(rentEntInfo); + + } + }