본문 바로가기

분류 전체보기

(54)
[crawling] 네이버 블로그 및 여러 웹사이트 크롤링 class CRAW_ETC: def __init__(self): self.site_specific_classes = { 'naver.com': [ 'se-main-container', # 네이버 블로그 'se_component_wrap', 'se-component-content', 'article_viewer', # 네이버 카페 'article_view', 'entryDetailView' # 네이버 지식백과 ], 'namu.wiki': [ ..
[crawling] selenium으로 크롤링 from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.chrome.options import Optionsfrom bs4 import BeautifulSoupimport timeurl = 'https://brunch.co.kr/@alex267/270'# Selenium 설정chrome_options = Options()chrome_options.add_argument("--headless") # 백그라운드 실행chrome_options.add_argument("--no-sandbox")chrome_options.add_argument("--disable-dev-shm..
브라우저 탭 이름 가져오기 selenium 활용 (리눅스) from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.chrome.options import Optionsimport time# ChromeDriver 경로 설정driver_path = '/project/work/test_api/chromedriver-linux64/chromedriver'# Chrome 옵션 설정chrome_options = Options()chrome_options.add_argument("--headless") # 브라우저를 백그라운드에서 실행 (옵션)chrome_options.add_argument("--no-sandbox")chrome_opt..
fast api 백그라운드 프로세스 from fastapi import BackgroundTasks, UploadFile, File, Form, Depends@file_router_v3.post( "/upload", tags=[tags], description="파일업로드")@async_transactionalasync def upload_files( files: Annotated[list[UploadFile], File(description="Multiple files as UploadFile")], background_tasks: BackgroundTasks, trans_file_name_list: List[str] = Form(description="."), sessi..
브라우저 탭 이름 크롤링하기 from playwright.sync_api import sync_playwrightdef test(url): with sync_playwright() as p: browser = p.chromium.launch(headless=True) page = browser.new_page() page.goto(url) title = page.title() print("browser_title:", title) browser.close() return titleurl = 'https://blog.naver.com/wait_forme/223698714900'title = test(url)
Elasticsearch 인덱스 전체 copy하기, 특정값들만 copy 1. 단순 인덱스 카피 from elasticsearch import Elasticsearch, helpers# 아이디, 비번 설정했을경우 verify_certs또한 False로 해줘야함 es = Elasticsearch('https://~~', basic_auth=('id', 'pwd'), verify_certs=False)old_index_name = 'test_test'new_index_name = 'new_test'if not es.indices.exists(index=new_index) : es.indices.create(index=new_index) print(f'신규생성')reindex_body = { "source" : { "index" : old_index_name ..
Elasticsearch 데이터 업데이트 시키기 from elasticsearch import Elasticsearch, helpers# 아이디, 비번 설정했을경우 verify_certs또한 False로 해줘야함 es = Elasticsearch('https://~~', basic_auth=('id', 'pwd'), verify_certs=False)index_name = 'test_test'es.indices.create(index=index_name)# 예시데이터data = [{"meta" : {"file_name" : "1.pptx", "test_col" : "hu1"}},{"meta" : {"file_name" : "2.ppt", "test_col" : "hu2"}},{"meta" : {"file_name" : "3.pptx", "test_c..
Elasticsearch TSL 에러 해결 Elasticsearch 사용할때 아이디 비번 설정해 놨다면 es 초기 생성할때 verify_certs 를 False로 해줘야함  from elasticsearch import Elasticsearch  es = Elasticsearch ('https://{ip}.{port}', basic_auth=({'id}': '{pw}'), verify_certs=False) query = {               " query" : {                    "terms": {                          "meta.{검색}" : "검색명" }}}res = es.search(body=query)
[Elasitsearch with Python] ImportError: cannot import name 'decodestring' from 'base64' http_urllib3.py, http_requests.py 의 decodestring 을 decodebytes 로 수정  출처Bug 1894188 - ImportError: cannot import name 'decodestring' from 'base64'
Elasticsearch docker 이용해서 해보기 docker로 elasricsearch 실행하기 docker run -it -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.5.1 curl날려서 구동잘 되는지확인해보기 >curl -X GET http://localhost:9200    ES 버전에 맞는 클라이언트 라이브러리를 호스트에 설치한다.pip install elasticsearch==7.5.1이후 로컬호스트에 설치된 ES 에 인덱스를 생성해준다.from elasticsearch import Elasticsearchfrom elasticsearch import helperses = Elasticsearc..