더러 운 사이트 검색. - 재 미 있 는 코드.

4861 단어
파충 류 를 배 운 후에 사이트 노드 규칙 에 따라 유용 한 정 보 를 얻어 분석 할 수 있다.물론 이런 기술 로 더 재 미 있 는 일 을 할 수 있다. 예 를 들 어 도 메 인 이름 을 옮 겨 다 니 고 설 정 된 키워드 에 따라 이 도 메 인 이름 이 대표 하 는 사이트 의 내용 이 어떤 편향 인지 확인 할 수 있다. 예 를 들 어 편향 이 더러 운 것 이다.
사고의 방향
생각 이 비교적 간단 하 다.먼저 사 이 트 를 옮 겨 다 니 며 어떤 사 이 트 를 옮 겨 다 닐 때 이 사이트 의 첫 페이지 의 텍스트 내용 만 필요 하 다.그 다음 에 미인, 섹시 등 편향 적 인 키 워드 를 만 들 었 다. 이 럴 때 정규 표현 식 으로 전체 웹 페이지 를 일치 시 키 고 일치 하 는 수량 이 충분 하면 특정한 편향 이 있 는 사이트 라 고 판단 할 수 있다.
이루어지다
두루
이것 은 기술적 인 함량 이 별로 없 기 때문에 for 순환 을 하면 ok 입 니 다. 사이트 가 너무 많 기 때문에 몇 분 이 든 가능 합 니 다. 우 리 는 전 세계 의 작은 사 이 트 를 모두 찾 아서 특정한 범 위 를 설정 하면 됩 니 다.그리고 기어 오 르 는 효율 을 높이 기 위해 서 는 다 중 스 레 드 를 이용 해 기어 간다.
public static void main(String[] args) {
        
        char[] charArr = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
                '0','1','2','3','4','5','6','7','8','9'};
        ArrayList urlList = new ArrayList();
        
        for(final char ch0 : charArr) {
            for(final char ch1 : charArr) {
                for(final char ch2 : charArr) {
                    new Thread(new Runnable() {
                        
                        @Override
                        public void run() {
                            YellowNetSniffer yellow = new YellowNetSniffer();
                            yellow.crawl("http://www.av" + ch0 + ch1 + ch2 + ".com");
                        }
                    }).start();
                }
            }
        }
    }

기어 오 르 기 일치
딱 두 마디 만.첫 페이지 의 내용 을 가 져 오고 정규 표현 식 으로 싱크로 율 을 일치 시 킵 니 다.
public boolean crawl(String url) {
        
        //   ,          ,       Jsoup,             
        Document doc = null;
        try {
            doc = Jsoup.connect(url)
                    .header("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36")
                    .timeout(1000 * 5)
                    .get("gbk");
        } catch (Exception e) {
            return false;
        }
        String content = doc.text();
        
        //   ,            
        String patternStr = "(  |  |  |18 |18 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |sexy|sex|fuck|fucked|breast|naked)";

        Pattern pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(content);
        
        int count = 0;
        String str = "";
        while(matcher.find()) {
            int start = matcher.start();
            int end = matcher.end();
            str += content.substring(start, end) + "@";
            count++;
        }
        if (count > 0) {
            System.out.println(url);
            System.out.println(str);
            System.out.println("  " + count + " ");
            System.out.println();
            return true;
        }
        else {
            return false;
        }
    }

넓히다
Jsoup 은 매우 좋 은 제3자 파충류 도구 이기 때문에 본 고 는 이 라 이브 러 리 를 사용 했다.그러나 이 도구 로 사이트 의 텍스트 내용 을 한 단계 얻 는 작업 을 했다.사실 이 단 계 는 스스로 입력 흐름 으로 이 루어 질 수 있다.제 가 쓰 면 자 유 롭 게 쓸 수 있 습 니 다. 전에 Jsoup 안에 구덩이 가 있 었 는데 꺼 낸 것 이 어 지 러 웠 고 마지막 단 계 는 제 가 쓴 것 으로 해결 한 것 으로 기억 합 니 다.
public class HtmlInputStream {
    
    
    public static String getContent(String originurl) {
        StringBuilder result = new StringBuilder();
        try {
            URL url = new URL(originurl);
            URLConnection conn = url.openConnection();
            conn.setRequestProperty("user-agent",
                    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" +
                    "    X-Requested-With:XMLHttpRequest");
            
            InputStream inOrigin = (InputStream) conn.getContent();
            InputStreamReader in = new InputStreamReader(inOrigin, "UTF-8");
            
            int ch;
            while((ch = in.read()) != -1) {
                result.append((char)ch);
            }
            
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return result.toString();
    }
}

마지막.
마지막 으로 마음껏 둘 러 볼 수 있 습 니 다 ~ 일 마치 고!
어서 오 세 요.

좋은 웹페이지 즐겨찾기