자바 httpRequest+Jsoup 를 사용 하여 빨 간 블 루 볼 번 호 를 얻 습 니 다.

1.JSOP 소개
1.1 안내
jsoup 는 자바 의 HTML 해상도 기 로 URL 주소,HTML 텍스트 내용 을 직접 분석 할 수 있 습 니 다.그것 은 DOM,CSS 및 jQuery 와 유사 한 조작 방법 으로 데 이 터 를 추출 하고 조작 할 수 있 는 매우 편리 한 API 를 제공 합 니 다.
1.2 JSOP 의 주요 기능
1.URL,파일 또는 문자열 에서 HTML 분석
2.DOM 또는 CSS 선택 기 를 사용 하여 데 이 터 를 찾 거나 꺼 냅 니 다.
3.HTML 요소,속성,텍스트 조작 가능
주의:jsoup 는 MIT 프로 토 콜 을 바탕 으로 발 표 된 것 으로 상업 프로젝트 에 안심 하고 사용 할 수 있 습 니 다.
2.소스 사이트 및 페이지 요소 분석
2.1 번호 원본
우선,여기 서 저 는 최근 몇 년 동안 비교적 안정 적 인 데이터 소스 주 소 를 선택 하 겠 습 니 다[모 사이트]캡 처 는 다음 과 같 습 니 다.

2.2 dom 요소 분석
2.2.1 추첨 번호 의 주체 분석
먼저 개발 자 도 구 를 열 고 모든 추첨 번호 에 대응 하 는 dom 요 소 를 찾 습 니 다.
각 호의 번호 정보 주체 가 하나의태그 에 있 는 것 을 볼 수 있 습 니 다.그 중에서 첫 번 째는 추첨 날짜 이 고 두 번 째는 추첨 번호 이 며 세 번 째는 추첨 번호 입 니 다.각 상 번 호 는 단독 태그 이 고 빨 간 공의 class=rr 입 니 다.농 구 는 스타일 을 설정 하지 않 았 습 니 다.

        <tr>
          <td align="center">2021-06-13</td>
          <td align="center">2021065</td>
          <td align="center" style="padding-left:10px;">          
          <em class="rr">01</em>          
          <em class="rr">04</em>          
          <em class="rr">08</em>          
          <em class="rr">19</em>          
          <em class="rr">29</em>          
          <em class="rr">33</em>                    
          <em>16</em></td>
          <td><strong>362,527,724</strong></td>
          <td align="left" style="color:#999;"><strong>3</strong></td>
          <td align="center"><strong class="rc">82</strong></td>
          <td align="center">
              <a href="http://www.zhcw.com/ssq/kjgg/" rel="external nofollow"  target="_blank"><img src="http://images.zhcw.com/zhcw2010/kaijiang/zhcw/ssqpd_42.jpg" width="16" height="16" align="absmiddle" title="    "></a>
              <a href="http://www.zhcw.com/video/kaijiangshipin/" rel="external nofollow"  target="_blank"><img src="http://images.zhcw.com/zhcw2010/kaijiang/zhcw/ssqpd_43.jpg" width="16" height="16" align="absmiddle" title="    "></a>
          </td>
        </tr>
2.2.2 페이지 영역 분석
우리 가 데 이 터 를 기어 올 라 갈 때 페이지 넘 기 작업 을 해 야 하기 때문에 페이지 넘 기 부분의 내용 을 분석 하고 개발 자 도구 에서 페이지 넘 기 영역 을 계속 찾 아야 합 니 다.

페이지 번호 부분 은의 마지막에서 볼 수 있 습 니 다.페이지 넘 기기 동작 내용 은 class=pg 의

탭 에서 볼 수 있 습 니 다.
여러 개의태그 배열 로 나 눌 수 있 으 며,페이지 를 넘 기 는 링크 의 규칙 을 분석 할 수 있 습 니 다.
/zhcw/inc/ssq/ssq_wqhg.jsp?pageNum=페이지 번호
혹시
/zhcw/html/ssq/list_페이지 번호.html
원소
속뜻
0
총 페이지 수
1
총기 록 수
2
첫 페이지 의 연결
3
이전 페이지 의 링크
4
다음 페이지 링크
5
마지막 페이지 연결
6
현재 페이지 수


<tr>
    <td colspan="7" align="center" style="background:#fdf2e3;">
        <p class="zhu"></p>
        <p class="pg">
             <strong>136</strong>   /<strong>2709 </strong>    
            <strong><a href="/zhcw/inc/ssq/ssq_wqhg.jsp" rel="external nofollow" >  </a></strong>
            <strong><a href="/zhcw/inc/ssq/ssq_wqhg.jsp?pageNum=1" rel="external nofollow" >   </a></strong>
            <strong><a href="/zhcw/inc/ssq/ssq_wqhg.jsp?pageNum=2" rel="external nofollow" >   </a></strong>
            <strong><a href="/zhcw/inc/ssq/ssq_wqhg.jsp?pageNum=136" rel="external nofollow" >  </a></strong>
               <strong> 1 </strong> </p>
     </td>
 </tr>
3.코드 구현
maven 참조,여 기 는 JSOP 1.13.1 버 전 을 사용 합 니 다.

  <dependency>
      <groupId>org.jsoup</groupId>
      <artifactId>jsoup</artifactId>
      <version>1.13.1</version>
  </dependency>
이것 은 jeecg 를 바탕 으로 개발 한 Job 을 사용 합 니 다.구축 과정 은 군말 하지 않 고 주체 코드 를 직접 봅 니 다.

 public void execute(JobExecutionContext arg0) throws JobExecutionException {
  Integer maxPage=getMaxPage();//     
  for(int pageNo=0;pageNo<maxPage;pageNo++){//          
   String url = "http://kaijiang.zhcw.com/zhcw/html/ssq/list_"+(pageNo+1)+".html";//     
      String strDateFormat = "yyyy-MM-dd";
         SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
   String html = JwtHttpUtil.httpRequest(url, "GET",null);//       
   Document doc =  Jsoup.parse(html);// Jsoup           Document
   Document doc1= Jsoup.parse(doc.getElementsByClass("wqhgt").toString());//wqhgt table   class,          table        Document
   Elements trs= doc1.getElementsByTag("tr");//  tag      tr  ,         Element  
   logger.info("    ---"+(pageNo+1)+"----"+trs.size());
   for(int i=2;i<trs.size()-1;i++){//                    tr        tr  ,    tr     
    try {
     Elements tds=trs.get(i).getElementsByTag("td");
     String kjrq=tds.get(0).text();
     String kjqh=tds.get(1).text();
     //           ,      ,           ,     
     Long count=lotterySsqKjjlService.getCountForJdbc("select count(*) from lottery_ssq_kjjl where SSQ_KJQH='"+ kjqh + "'");
     //          ,               ,     
     if(count>0)break;
     LotterySsqKjjlEntity kjhmEntiry=new LotterySsqKjjlEntity();
        Elements kjhm=tds.get(2).getElementsByTag("em");
     kjhmEntiry.setSsqKjrq(sdf.parse(kjrq));
     kjhmEntiry.setSsqKjqh(kjqh);
        kjhmEntiry.setSsqR1(Integer.parseInt(kjhm.get(0).text()));
        kjhmEntiry.setSsqR2(Integer.parseInt(kjhm.get(1).text()));
        kjhmEntiry.setSsqR3(Integer.parseInt(kjhm.get(2).text()));
        kjhmEntiry.setSsqR4(Integer.parseInt(kjhm.get(3).text()));
        kjhmEntiry.setSsqR5(Integer.parseInt(kjhm.get(4).text()));
        kjhmEntiry.setSsqR6(Integer.parseInt(kjhm.get(5).text()));
        kjhmEntiry.setSsqB1(Integer.parseInt(kjhm.get(6).text()));
        lotterySsqKjjlService.save(kjhmEntiry);
    } catch (ParseException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
  
 }
 
 private Integer getMaxPage(){
  String url = "http://kaijiang.zhcw.com/zhcw/html/ssq/list.html";
  String html = JwtHttpUtil.httpRequest(url, "GET",null);
  Document doc =  Jsoup.parse(html);
  Document docPageBar= Jsoup.parse(doc.getElementsByClass("pg").toString());
  Elements elePageBar = docPageBar.getElementsByTag("strong");
  Integer maxPageNo=Integer.parseInt(elePageBar.get(0).text());
  return maxPageNo;
 }
다음은 완 료 된 부분 데이터 캡 처 입 니 다.

기본 데 이 터 를 얻 은 후에 우 리 는 job 를 하나 더 써 서 매 호의 추첨 번호 의 지 표를 계산 하고 상 번호 분석,예측 등 을 할 수 있다.
여기 서 일부 분석 지표의 계산 을 간단하게 실 현 했 고 다음은 주체 코드 이다.

 public void run(){
  List<LotterySsqKjjlEntity> list= lotterySsqKjjlService.findByQueryString("from LotterySsqKjjlEntity t");
  for(int i=0;i<list.size();i++){
   LotterySsqKjjlEntity kjjg=list.get(i);
   logger.info("    :"+kjjg.getSsqKjqh());
   kjjg.setSsqMin(kjjg.getSsqR1());//   
   kjjg.setSsqMax(kjjg.getSsqR6());//   
   kjjg.setSsqKd(kjjg.getSsqR6()-kjjg.getSsqR1());//    
   kjjg.setSsqJsCnt(ssqKjjgUtils(kjjg, "jsCnt"));//    
   kjjg.setSsqOsCnt(ssqKjjgUtils(kjjg, "osCnt"));//    
   kjjg.setSsqSum(ssqKjjgUtils(kjjg, "sum"));//   
   lotterySsqKjjlService.updateEntitie(kjjg);
   
  }
  logger.info("      "+list.size());
 }
 /**
  * 
  * @param kjjg
  * @param opType jsgs=    
  * @return
  */
 private Integer ssqKjjgUtils(LotterySsqKjjlEntity kjjg,String opType){
  List<Integer> t =new ArrayList<Integer>();
  t.add(kjjg.getSsqR1());
  t.add(kjjg.getSsqR2());
  t.add(kjjg.getSsqR3());
  t.add(kjjg.getSsqR4());
  t.add(kjjg.getSsqR5());
  t.add(kjjg.getSsqR6());
  Integer result=0;
  switch (opType) {
  case "jsCnt":
  case "osCnt":
   int jsgs=0;
   int osgs=0;
   for(int i=0;i<t.size();i++){
    if(t.get(i)%2==0){
     osgs++;
    }else{
     jsgs++;
    }
   }
   if("jsCnt".equals(opType)){
    result=jsgs;
   }else{
    result=osgs;
   }
   break;
  case "sum":
   int sum=0;
   for(int i=0;i<t.size();i++){
    sum+=t.get(i);
   }
   result=sum;
   break;
  default:
   break;
  }
  return result;
 }
이로써 이 간단 한 파충 류 는 다 썼 다.기어 오 는 기초 데 이 터 를 이용 해 데이터 분석 과 예측 을 할 수 있다.
자바 가 httpRequest+Jsoup 을 사용 하여 레 드 블 루 볼 번 호 를 얻 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 가 레 드 블 루 볼 번 호 를 얻 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기