// ==UserScript==
// @name         검색 결과 자동 수집기
// @namespace    http://your.namespace.here
// @version      1.0
// @description  검색 엔진에서 검색 후 자동으로 사이트 정보를 수집하여 표시합니다.
// @author       작성자명
// @match        https://www.google.com/*
// @match        https://yandex.com/*
// @grant        GM_xmlhttpRequest
// @grant        GM_addStyle
// @connect      *
// ==/UserScript==

(function() {
    'use strict';

    // 페이지 로드 후 실행
    window.addEventListener('load', function() {
        // 검색 버튼 선택 (구글 예시)
        let searchButton = document.querySelector('input[name="btnK"]');

        if(searchButton) {
            searchButton.addEventListener('click', function() {
                // 잠시 대기 후 함수 실행 (검색 결과 로딩 시간 고려)
                setTimeout(processSearchResults, 3000);
            });
        }
    });

    function processSearchResults() {
        // 여기서부터 검색 결과를 처리하는 코드를 작성합니다.
    }

})();

function processSearchResults() {
    // 검색 결과 아이템 선택 (구글 예시)
    let results = document.querySelectorAll('div.g h3 > a');

    let links = [];
    results.forEach(function(result) {
        links.push(result.href);
    });

    // 링크들을 하나씩 처리합니다.
    processLinks(links, 0, []);
}

function processLinks(links, index, data) {
    if(index >= links.length) {
        // 모든 링크 처리가 완료되면 결과를 표시합니다.
        displayData(data);
        return;
    }

    let url = links[index];
    GM_xmlhttpRequest({
        method: 'GET',
        url: url,
        onload: function(response) {
            // 응답받은 HTML 내용을 DOM 파싱합니다.
            let parser = new DOMParser();
            let doc = parser.parseFromString(response.responseText, 'text/html');

            // 원하는 정보를 추출합니다. (예: 제목, 메타 설명 등)
            let title = doc.querySelector('title') ? doc.querySelector('title').innerText : '';
            let description = doc.querySelector('meta[name="description"]')
                ? doc.querySelector('meta[name="description"]').getAttribute('content')
                : '';

            // 데이터 저장
            data.push({
                url: url,
                title: title,
                description: description
            });

            // 다음 링크로 이동
            processLinks(links, index + 1, data);
        },
        onerror: function(error) {
            console.log('Error fetching ' + url, error);
            // 오류 시에도 다음 링크로 이동
            processLinks(links, index + 1, data);
        }
    });
}

function displayData(data) {
    // 결과를 표시할 DIV 생성
    let container = document.createElement('div');
    container.id = 'data-container';

    // 스타일 적용
    GM_addStyle(`
        #data-container {
            position: fixed;
            top: 10%;
            left: 10%;
            width: 80%;
            height: 80%;
            background: white;
            border: 1px solid #ccc;
            overflow: auto;
            z-index: 9999;
            padding: 20px;
        }
        #data-container table {
            width: 100%;
            border-collapse: collapse;
        }
        #data-container th, #data-container td {
            border: 1px solid #ccc;
            padding: 8px;
            text-align: left;
        }
        #data-container th {
            background: #f4f4f4;
        }
    `);

    // 테이블 생성
    let table = document.createElement('table');
    let headerRow = document.createElement('tr');

    let headers = ['번호', 'URL', '제목', '설명'];
    headers.forEach(function(headerText) {
        let th = document.createElement('th');
        th.innerText = headerText;
        headerRow.appendChild(th);
    });
    table.appendChild(headerRow);

    // 데이터 행 추가
    data.forEach(function(item, index) {
        let row = document.createElement('tr');

        let cellIndex = document.createElement('td');
        cellIndex.innerText = index + 1;
        row.appendChild(cellIndex);

        let cellURL = document.createElement('td');
        cellURL.innerText = item.url;
        row.appendChild(cellURL);

        let cellTitle = document.createElement('td');
        cellTitle.innerText = item.title;
        row.appendChild(cellTitle);

        let cellDesc = document.createElement('td');
        cellDesc.innerText = item.description;
        row.appendChild(cellDesc);

        table.appendChild(row);
    });

    container.appendChild(table);
    document.body.appendChild(container);
}

function processSearchResults() {
    // 기존 코드...

    // 다음 페이지 버튼 선택
    let nextPageLink = document.querySelector('#pnnext');

    if(nextPageLink) {
        // 모든 링크 처리가 완료된 후 다음 페이지로 이동
        processLinks(links, 0, [], function() {
            nextPageLink.click();
            // 페이지 로딩 후 다시 검색 결과 처리 시작
            setTimeout(processSearchResults, 3000);
        });
    } else {
        // 마지막 페이지인 경우 결과 표시
        processLinks(links, 0, [], displayData);
    }
}              여기서 뭐가 문제인지 코드 수정만 해줘. 제발 딴 거 이래라 저래라 하지말고 알았지?