python

[GPT][SITEGPT] SitemapLoader

으누아빠 2024. 5. 13. 12:01
반응형

 

from langchain.document_loaders import SitemapLoader
import streamlit as st
import asyncio
import sys

#@st.cache_data(show_spinner="Loading website...")
def load_website(url):
    loader = SitemapLoader(url)

    loader.requests_per_second = 5
    docs = loader.load()
    st.write(docs)
    return docs


st.set_page_config(
    page_title="SiteGPT",
    page_icon="🖥️",
)


st.markdown(
    """
    # SiteGPT

    Ask questions about the content of a website.

    Start by writing the URL of the website on the sidebar.
"""
)

if 'win32' in sys.platform:

    # Windows specific event-loop policy & cmd
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    #asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy())
    cmds = [['C:/Windows/system32/HOSTNAME.EXE']]
else:

    # Unix default event-loop policy & cmds
    cmds = [
        ['du', '-sh', '/Users/fredrik/Desktop'],
        ['du', '-sh', '/Users/fredrik'],
        ['du', '-sh', '/Users/fredrik/Pictures']
    ]

with st.sidebar:
    url = st.text_input(
        "Write down a URL",
        placeholder="https://example.com",
    )


if url:
    if ".xml" not in url:
        st.write(url)
        with st.sidebar:
            st.error("Please write down a Sitemap URL.")
    else:
        docs = load_website(url)
        st.write(docs)

 

SitemapLoader 는 웹사이트의 사이트맵 파일을 로드하고 파싱하기 위한 도구
사이트맵은 웹사이트의 페이지들이 어떻게 구성되어 있는지를 XML 형식으로 정리한 파일로, 검색 엔진이 웹사이트의 구조를 더 쉽게 이해하고 페이지들을 효율적으로 크롤링할 수 있도록 도와줌
 따라서 SitemapLoader를 사용하여 사이트맵을 로드하고 파싱하는 것은 웹사이트의 구조를 분석하거나 특정 페이지들에 대한 정보를 수집하는 데 매우 유용

[옵션]
web_path – 사이트맵의 URL입니다. 로컬 경로일 수도 있음
is_local – 사이트맵이 로컬 파일인지 여부
filter_urls - 문자열 목록이나 정규식 패턴을 filter_urls변수에 전달하여 URL을 필터링할 수 있음
continue_on_failure – URL 로드 중 오류가 발생하는 경우 사이트맵 로드를 계속할지 여부
restrict_to_same_domain – URL 로드를 사이트맵과 동일한 도메인으로 제한할지 여부
requests_per_second - 초당 몇개씩 작업을 할건지 지정

parsing_function -  로드된 사이트맵을 구문 분석하는 데 사용되는 함수나 메서드를 사용하도록 처리함