-
[비공개] 웹 크롤링 실전 - 쿠팡 상품 정보 가져오기
본견적으로 쿠팡 상품 정보를 수집해 보자. 1. 키워드 검색 keyword = input("KEYWORD : ") url = f"https://www.coupang.com/np/search?component=&q={keyword}" 2. 쿠팡 검색 결과 화면 분석하기 크롤링 결과를 잘 활용하기 위해선 화면 분석이 정말 중요하다. 수집해야 할 상품을 솎아내야 한다. 광고 상품이나 이벤트 상품을 걸러야 하는 것이다. 그러기 위해선 개발자 도구 분석이 필수적이다. 각 상품은 search-product 클래스에 정의된다. 이 하위에 모든 상품 정보를 포함한다. 3. 코드 작성하기 아래 코드 차이는 정확한 클래스명을 지정하는 것이다. 첫번째는 search-product 클래스 외 또 다른 클래스가 함께 있어도 찾아진다. 즉, 광고나 이벤트에 이 클래스가 이용된다는 말이다. 반면 두 번째는 search-product 클래스만 가진 태그에서 상품 정보를 추출한다. # items = soup.select(".search-pr..추천 -
[비공개] 웹 크롤링 실전 - 쿠팡 크롤링 안되면 이것만 넣어주면 됩니다.
쿠팡 파트너스를 통한 제휴 수익을 가장 크게 기대할 수 있는 곳이 바로 쿠팡이다. 얼마나 많은 봇들이 유용한 데이터를 수집하려고 설쳐 되겠는가! 단순 크롤링 코드로는 쿠팡 사이트 접속이 안 될뿐더러 자칫 잘못하면 차단이 될 수도 있다. 주의할 점을 알아보고 가장 기본적인 크롤링을 통한 쿠팡 접속을 해보자. 1. robots.txt 확인 https://www.coupang.com/robots.txt 이 페이지는 외부에서 쿠팡 접속 시 허용하는 것과 아닌 것을 알려준다. 구글과 네이버 외에 다른 aget를 통한 접속은 허용하지 않는다. 다만 강제성은 없고 information이다. 사이트에 영향을 준다면 이 기준에 맞춰 문제를 일으키는 봇이나 프로그램을 차단할 수 있다는 경고이기도 하다. 원칙적으로는 금지하고 있지만, 실습이나 참고용으로 하려면 vpn이나 핫스팟으로 가변 ip주소를 이용하는 방안..추천 -
[비공개] 웹 크롤링 기초 - 네이버 쇼핑몰 상품 정보 추출하기
BeautifulSoup, Selenium을 이용해 네이버 쇼핑몰 상품 정보를 추출해 보자. requests는 처리속도는 좋지만 동적인 페이지 소싱이 어려워 Selenium을 이용한다. 네이버 상품 정보를 추출하는 연습만으로 웹 크롤링 이해하는 데 크게 도움이 될 것이다. 제대로 익히면 다른 사이트 데이터 추출 역시 식은 죽 먹는 것처럼 쉬워질 것이다. 1.네이버 쇼핑몰 화면 분석하자. 네이버 쇼핑몰에 노트북으로 검색한다. 상품 이미지, 상품명, 가격, 속성 등이 포함된 리스트가 나타난다. https://search.shopping.naver.com/search/all?query=노트북 개발자 도구(F12)를 열어 데이터 추출할 키를 찾는다. 상품 리스트에 광고제품은 제외하자. class명이 광고와 일반상품을 구별하게 네이밍 되어있다. 친절하다. 2. 코드 작성하기 (1) 셀레니움 설정 frombs4importBeautifulSoup fromseleniumimportwebdriver fromseleniuht..추천 -
[비공개] 웹 크롤링 기초 - 셀레니움으로네이버 기사 제목 가져오기
지난 포스팅에 requests를 이용해 네이버 기사를 크롤링했었다. 2024.03.22 - [코드리뷰/chatGPT(Python)코드] - 웹 크롤링 기초 - 네이버 기사 제목 가져오기 웹 크롤링 기초 - 네이버 기사 제목 가져오기 웹 크롤링을 이용해 간단하게 네이버 기사 제목을 뽑아보자. 웹 데이터 추출을 위해 select_one/select/find/find_all 메소드를 이용한다. 기초지만 크로링에서 가장 중요한 기능을 담당한다고해도 과언 iamgus.tistory.com requests는 빠르다는 장점은 있지만 동적인 데이터를 가져오는데 한계가 있다. 셀레니움을 이용하면 이런 문제가 해결된다. 수많은 기능이 내장되어 있어서 일일이 다 기술할 수는 없지만, 동적 페이지 구현 부분을 해보도록 하자. 1. 셀레니움 관련 By, Keys를 import 한다. 스크롤 다운과 같은 효과를 내기 위함이다. 페이지가 내려가면 자바스크립트가 동적..추천 -
[비공개] 웹 크롤링 기초 - selenium 네이버 접속하기
동적인 웹 페이지, 즉 자바스크립트로 구성된 페이지는 일반적인(requests이용한) 크롤링을 통해 가져오기 어렵다. selenium이 등장하면서 간편하게 구현할 수 있게 되었다. selenium 기초 설정을 알아보자. 1. selenium 설치 : 별거없다. 아래 명령어 입력하고 엔터 치면 자동 설치된다. pip install selenium 2. 코드 작성 from selenium import webdriver url = "https://naver.com" driver = webdriver.Chrome() driver.get(url) selenium을 통한 네이버 접속 소스다. 이보다 간단할 순 없다. 3. 코드 추가 (options 설정) Options을 설정한다. (1) 프로그램 실행 시 웹 창을 최대화로 열기기 options.add_argument("--start-maximized") (2) 헤더정보 설정 - 윈도우 PC 헤더 : naver.com으로 실행된다. options.add_argument("User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36") - 안드로이드 모바..추천 -
[비공개] 웹 크롤링 기초 - 네이버 헤더 정보 가져와 설정하기
웹 사이트 정보를 크롤링해 가져올 때 가끔 안 되는 경우가 있다. 대부분 접속자 헤더정보를 체크해 막아버리는 경우가 많다. 무분별한 봇 크롤링을 통한 부하를 방지하기 위함인데, 이럴 경우 어떻게 해야 할까? 네이버를 예를 들어보자. 네이버는 크롤링 시 헤더정보를 체크하지 않지만, 체크한다고 가정하고 회피코드를 작성해 보자. 1. 크롤링 시 내 pc 헤더정보 확인하기 [파이썬 코드] url = f"https://search.naver.com/search.naver?ssc=tab.news.all&where=news&sm=tab_jum&query={keyword}" res = requests.get(url) print(res.request.headers) [출력 결과] {'User-Agent': 'python-requests/2.31.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 2. 웹 브라이저에서 네이버 접속해 헤더정보 확인하기 - 네트워크 > 이름 (naver) > User-Agent 3. 소스코드에서 헤더 정보 변경해 네이버 크롤링 하..추천 -
[비공개] 웹 크롤링 기초 - 네이버 기사 제목 가져오기
웹 크롤링을 이용해 간단하게 네이버 기사 제목을 뽑아보자. 웹 데이터 추출을 위해 select_one/select/find/find_all 메소드를 이용한다. 기초지만 크로링에서 가장 중요한 기능을 담당한다고해도 과언이 아니다. [네이버 제목 추출 파이썬 코드] import requests from bs4 import BeautifulSoup keyword = input("KEYWORD : ") url = f"https://search.naver.com/search.naver?ssc=tab.blog.all&sm=tab_jum&query={keyword}" res = requests.get(url) if res.status_code == 200: html = res.text soup = BeautifulSoup(html, 'html.parser') # select_one() print("-------------- select_one() -------------- ") print(soup.select_one(".title_link").text) # select() print("-------------- select() -------------- ") titles = soup.select(".title_link") for title in titles[:5]: print(title.text) # find() print("-------------- find() -------------- ") print(soup.find(cl..추천 -
[비공개] GRADIO 챗봇에 제휴링크 걸기
Streamlit에 이어 Gradio를 이용해 AI 챗봇을 만들어 보자. Gradio는 챗봇 인터페이스를 아주 쉽고 편리하게 제공한다. 여기에 OpenAI 인공지능을 탑재하면 된다. 1. Gradio 설치하기 pip install gradio 여느 파이썬 모듈과 동일하게 설치한다. 2. 코드 작성하기 chat_history를 이용해 상담내용을 기억하고 채팅창에 띄워준다. import gradio as gr from openai import OpenAI from dotenv import load_dotenv load_dotenv() client = OpenAI() with gr.Blocks() as demo: iframe_html = """ """ gr.HTML(iframe_html) chatbot = gr.Chatbot() msg = gr.Textbox() clear = gr.ClearButton([msg, chatbot]) messages = [ {"role": "system", "content": """ 당신은 연애코칭 전문가이자 심리학을 전공했습니다. 쉬운 용어를 이용해 이해하기 쉽게 상담하세요. 규칙은 다음과 같아요. 1. 친한 친구에게 말하듯 편안하게 상담해줘...추천 -
[비공개] AI 챗봇 상담사 게시해 수익 창출하기
지난 포스팅에 Streamlit을 이용해 챗봇 상담사를 만들었다. 한 걸을 더 나아가 streamlit.io 사이트에 내가 만든 챗봇을 게시해 수익 창출을 해보자. 1. 여러 사용자를 위한 소스 코드 다듬기 사용자가 별 상담내용이 기록되고 대화가 되어야 한다. 그러기 위해서는 스레드가 각각 생성되어야 한다. 그 외 openai api키 같이 중요한 코드는 숨기고 배포하도록 하자. from openai import OpenAI import streamlit as st #from dotenv import load_dotenv #load_dotenv() import time assistant_id = st.secrets['assistant_id'] with st.sidebar: st.link_button("더 좋은 컨텐츠를 위한 후원하기","https://toss.me/guslang") iframe_html = """ """ st.markdown(iframe_html, unsafe_allow_html=True) st.info("이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.") openai_api_key = st.text_input("OpenAI AP..추천 -
[비공개] Streamlit 쿠팡 파트너스와 토스 후원 링크로 수익 창출
Streamlit 코드에 쿠팡 파트너스와 토스 후원 링크를 걸어보자. 간단한 코드로 수익을 창출 기회가 생길 수 있다니 재미있지 않은가! 1. 토스 후원 링크 만들기 토스 접속해 후원 링크를 만든다. 어렵지 않으니 만드는 방법은 패쓰~ https://toss.me/guslang guslang님에게 보내주세요 토스아이디로 안전하게 익명 송금하세요. toss.me 요렇게 생겼다. "익명 송금하기"를 눌러 송금하면 내 계좌에 꽂힌다. 2. 쿠팡 파트너스 배너 만들기 역시 쿠팡 파트너스에 가입하고 배너 광고를 만든다. 300 * 250 사이즈 ifream태그 코드를 복사한다. 3. Streamlit 코드 작성 from openai import OpenAI import streamlit as st from dotenv import load_dotenv load_dotenv() # client = OpenAI() # print(f"client.api_key : {client.api_key}") with st.sidebar: st.link_button("더 좋은 컨텐츠를 위한 후원하기","https://toss.me/guslang") ifram..추천