탐색
가이드
@himy799
전체 보기
프로젝트
포스트
팔로잉
스크랩
전체 보기
프로젝트
포스트
팔로잉
스크랩
프로젝트 히스토리
프로젝트 상세 페이지
타임라인
리스트
2022.03.28
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링편 15일차
# 라이브러리 import from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By import time chrome_driver = ChromeDriverManager().install() service = Service(chrome_driver) driver = webdriver.Chrome(service=service) # 인터파크 전시 접속 inter_url = 'https://ticket.interpark.com/LesIndex.asp' driver.get(inter_url) # 시간적 여유 원하는 만큼 time.sleep(1) #랭킹 메뉴 클릭 xpath = "/html/body/div[8]/div/div[4]/div[1]/dl/dd[1]/a" rank = driver.find_element(By.XPATH, xpath) rank.click() time.sleep(2) #정적 크롤링으로 주간 전시 top5순위 가져오기 import requests import bs4 URL = 'http://ticket.interpark.com/TPGoodsList.asp?Ca=Eve&SubCa=Eve_O' raw = requests.get(URL) html = bs4.BeautifulSoup(raw.text, 'html.parser') target = html.find('div', {'class' : 'stit'}) arts = target.find_all("td", {'class' : 'RKtxt'}) print("<주간전시랭킹 top5>") for art in arts[:5]: print("전시상품 : ", art.text.strip()) #strip() 공백 제거위해 이용 #월간 전시 랭킹 버튼 클릭 xpath1 = "/html/body/table/tbody/tr[2]/td[3]/div/div/div[1]/div[1]/a[3]/img" monthr = driver.find_element(By.XPATH, xpath1) monthr.click() time.sleep(2) #정적 크롤링으로 top5순위 가져오기 URL1 = 'http://ticket.interpark.com/TPGoodsList.asp?Ca=Eve&SubCa=Eve_O&Sort=3' raw1 = requests.get(URL1) html = bs4.BeautifulSoup(raw1.text, 'html.parser') target = html.find('div', {'class' : 'stit'}) arts = target.find_all("td", {'class' : 'RKtxt'}) print("\n<월간전시랭킹 top5>") for art in arts[:5]: print("전시상품 : ", art.text.strip()) #strip() 공백 제거위해 이용
2022.03.25
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링편 14일차
📖 Python Code # Library 가져오기 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By import time chrome_driver = ChromeDriverManager().install() service = Service(chrome_driver) driver = webdriver.Chrome(service=service) # 네이버 로그인 페이지 접속 login_url = "https://nid.naver.com/nidlogin.login" driver.get(login_url) time.sleep(2) # 아이디, 비밀번호 변수에 저장 my_id = "comu" my_pw = "12345" # 아이디, 비밀번호 입력 driver.execute_script("document.getElementsByName('id')[0].value = '" + my_id + "'") driver.execute_script("document.getElementsByName('pw')[0].value = '" + my_pw + "'") time.sleep(1) # 로그인 버튼 클릭 button = driver.find_element(By.ID, "log.login") button.click() time.sleep(1) # 코뮤니티 접속 comu_url = "https://cafe.naver.com/codeuniv" driver.get(comu_url) time.sleep(1) # '신규회원게시판' 클릭 menu = driver.find_element(By.ID, "menuLink90") menu.click() time.sleep(1) # 프레임 전환 # driver.switch_to.frame({frame name}) # 프레임 확인: 개발자 도구 → iframe 검색 driver.switch_to.frame("cafe_main") time.sleep(1) xpath = "/html/body/div[1]/div/div[4]/table/tbody/tr[1]/td[1]/div[3]/div/a" # 첫번째 글 클릭 writing = driver.find_element(By.XPATH, xpath) writing.click() time.sleep(1) # 글 내용 출력 content = driver.find_element(By.CSS_SELECTOR, "div.se-component-content").text print(content) driver.close()
2022.03.25
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링편 13일차
첫 번째 Source Code 영단어 번역 여러 번 실행 번역 결과를 모두 'my_papago.csv' 파일에 저장 # 필요한 library 가져오기 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By import time import csv # 파파고 웹 페이지 접속 # 자동화된 크롬 창 실행 chrome_driver = ChromeDriverManager().install() service = Service(chrome_driver) driver = webdriver.Chrome(service=service) # 파파고 웹 페이지 접속 papago_url = 'https://papago.naver.com/' driver.get(papago_url) # 시간적 여유 3초 time.sleep(3) # CSV 파일 'my_papago.csv' 생성 # 작성할 'my_papago.csv' 파일을 생성하여 변수 'f'에 저장 f = open('./my_papago.csv', 'w', newline = '', encoding='utf-8-sig') # writer 객체 생성 & 파일의 열 제목 생성 # CSV 파일을 작성하는 객체 변수 'wtr' 생성 wtr = csv.writer(f) # 열 제목 작성 wtr.writerow(['영단어', '번역결과']) # 반복문을 활용하여 번역기 구현 및 CSV 파일에 저장 # 무한 루프 while True: keyword = input("번역할 영단어 입력 (0 입력하면 종료) : ") if keyword == "0": print("번역 종료") break # 영단어 입력, 번역 버튼 클릭 form = driver.find_element(By.CSS_SELECTOR, "textarea#txtSource") form.send_keys(keyword) button = driver.find_element(By.CSS_SELECTOR, "button#btnTranslate") button.click() time.sleep(1) # 번역 결과 저장 output = driver.find_element(By.CSS_SELECTOR, "div#txtTarget").text # my_papago.csv 파일에 [영단어, 번역결과] 작성 wtr.writerow([keyword, output]) # 영단어 입력 칸 초기화 driver.find_element(By.CSS_SELECTOR, "textarea#txtSource").clear() driver.close() f.close() 🔥 두 번째 Source Code 영단어 번역 여러 번 실행 'my_papago.csv' 파일에 있는 영단어 경우, 저장 X 파일에 없는 영단어 경우, 번역 결과 저장 # 라이브러리 import from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By import time import csv # 자동화된 크롬 창 실행 chrome_driver = ChromeDriverManager().install() service = Service(chrome_driver) driver = webdriver.Chrome(service=service) # 파파고 웹 페이지 접속 papago_url = 'https://papago.naver.com/' driver.get(papago_url) # 시간적 여유 3초 time.sleep(3) # 읽어올 'my_papago.csv' 파일을 변수 'f'에 저장 f = open('./my_papago.csv', 'r', encoding="utf-8-sig") # CSV 파일의 모든 데이터를 변수 'rdr'에 저장 rdr = csv.reader(f) # 'rdr'의 첫 번째 (열 제목)는 건너뜀 next(rdr) # 딕셔너리 생성 my_dict = {} # 딕셔너리에 영단어와 번역 결과를 모두 저장 for row in rdr: keyword = row[0] korean = row[1] my_dict[keyword] = korean # 파일 닫기 f.close() # 추가 옵션 'a'를 사용하여 파일 다시 열기 f = open('./my_papago.csv', 'a', newline = '', encoding="utf-8-sig") wtr = csv.writer(f) # while문 안에 있는 조건문을 확인해주세요 while True: keyword = input("번역할 영단어 입력 (0 입력하면 종료) : ") if keyword == "0": print("번역 종료") break # 영단어가 'my_dict'의 키 값 중에 있다면, 이 사실을 알려주고 저장되어있던 번역 결과 출력 if keyword in my_dict.keys(): print("이미 번역한 영단어입니다! 뜻은", my_dict[keyword], "입니다.") # 위의 경우에 포함되지 않으면, 딕셔너리와 CSV 파일에 추가 else: driver.find_element(By.CSS_SELECTOR, "textarea#txtSource").send_keys(keyword) driver.find_element(By.CSS_SELECTOR, "button#btnTranslate").click() time.sleep(1) output = driver.find_element(By.CSS_SELECTOR, "div#txtTarget").text # CSV 파일에 행 추가 wtr.writerow([keyword, output]) # 딕셔너리에 추가 my_dict[keyword] = output driver.find_element(By.CSS_SELECTOR, "textarea#txtSource").clear() driver.close() f.close()
2022.03.23
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링 12일차
⭐코드 import csv f = open("./covid19_articles.csv",'r') rdr = csv.reader(f) for row in rdr: if '[속보]' in row[2]: print(row[2]) f.close()
2022.03.22
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링편 11일차
[사전 코드] from selenium import webdriver import time driver = webdriver.Chrome('./chromedriver') URL = "https://papago.naver.com/" driver.get(URL) time.sleep(3) WordDic = {} WordList = [] while True: word = input("번역할 영단어 입력 (0을 입력하면 종료됩니다.) : ") if word == "0": break WordList.append(word) for word in WordList: form = driver.find_element_by_css_selector("textarea#txtSource") form.send_keys(word) button = driver.find_element_by_css_selector("button#btnTranslate") button.click() time.sleep(2) result = driver.find_element_by_css_selector("div#txtTarget") WordDic[word] = result.text form.clear() print(WordDic) driver.close()
2022.03.21
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링 10일차
라이브러리 'selenum' => 동적 크롤링을 위한 라이브러리 => 웹 드라이버(webdriver)를 사용하여 자동화 실현 => 사람이 데이터를 수집하는 방식 그대로 크롤링하는 기계를 만듦 pip install selenium webdriver => 웹 응용 프로그램들의 테스트를 단순화 및 가속화해주는 툴 => 웹 브라우저를 자동으로 조작하기 위해 프로그래밍 언어와 브라우저를 연결하는 매개체 chromdriver => 크롬 브라우저의 웹 드라이버 => 본인이 사용하는 chrome 브라우저의 버전을 확인하여 그에 맞는 웹드라이버 설치 동적 크롤링 맛보기 from selenium import webdriver => 특정 라이브러리(selenium)에서 원하는 메소드/클래스(webdriver)만 불러오겠다는 의미 driver = webdriver.Chrome('./chromdriver') => 웹 드라이버를 로딩하는 코드 => 인자로 받은 드라이버 경로에 존재하는 웹 드라이버를 사용해 자동화된 크롬창을 열 수 있음 driver.get(URL) 시간지연, 자동종료 => selenium은 페이지를 직접 이동하면서 조작하기 때문에 적절한 지연 시간이 필요 => time 라이브러리에서 제공하는 sleep 함수 이용 import time time.sleep(대기시간(초)) => 마지막으로 크롤링 과정이 다 끝나면 크롬창 종료 driver. close()
2022.03.21
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링 9일차
크롤링 9차 관심 있는 키워드 입력, 관련 뉴스 기사 제목 100개 수집하기 url은 한글의 경우 자동으로 인코딩되어 이상한 문자열로 출력됨 -> 검색할 키워드로 넣기 import requests import bs4 URL="https://browse.gmarket.co.kr/search?keyword=%EB%A7%88%EC%8A%A4%ED%81%AC" raw=requests.get(URL) #bs4로 raw.text를 HTML 코드로 변환 html=bs4.BeautifulSoup(raw.text,'html.parser') #HTML 코드에서 해당 태그, 선택자를 찾아 box(변수)에 저장 box=html.find('div',{'class':'section__module-wrap','module-design-id':'15'}) #각 상품 추출 #각 상품에 대한 태그는 <div class="box__item-container"> items=box.find_all('div',{"class":'box__item-container'}) print(len(items)) #상품의 이름, 가격 추출 for item in items[:10]: title=item.find('span',{'class':'text__item'}) #item.find인 이유 - items list 중 n번째 원소 기준 price=item.find('strong',{'class':'text__value'}) print("이름:",title) print("가격:",price) print() 크롤링 기능 추가 입력한 키워드의 상품 정보를 받아오도록 import requests import bs4 #무한 반복 & 0 입력 시 종료 while True: keyword=input("검색을 원하는 키워드를 입력하세요(0입력 시 종료)") if keyword=="0": break #URL="https://browse.gmarket.co.kr/search?keyword=마스크" #URL 수정 URL="https://browse.gmarket.co.kr/search?keyword="+keyword raw=requests.get(URL) html=bs4.BeautifulSoup(raw.text,'html.parser') box=html.find('div',{'class':'section__module-wrap','module-design-id':'15'}) items=box.find_all('div',{"class":'box__item-container}) print"<G마켓의",keyword," 상품 정보>") for item in items[:10]: title=item.find('span',{'class':'text__item}) price=item.find('strong',{'class':text__value'}) print("이름:",title.text) print("가격:",price.text) print() print('\n\n') 최종 코드 import requests from bs4 import BeautifulSoup keyword=input("키워드:") count=0 for page in range(1,11): news_url="https://search.hankyung.com/apps.frm/search.news?query="+keyword+&page=+str(page) raw=requests.get(news_url) soup=BeautifulSoup(raw.text,'html.parser') box=soup.find('ul',{'class':'article'}) all_title=box.find_all('em',{'class':'tit'}) for title in all_title: count+=1 t=title.text print(count,'-',t.strip()) #strip()는 공백 제거
2022.03.17
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링편 8일차
Q1. G마켓에서 정렬 방식에 따른 URL 패턴 파악해보기 : 판매 인기순, 낮은 가격 순으로 정렬했을 때 URL 패턴 분석 url 중 검색어 다음에 &s 가 추가되는데 정렬 방식에 따라 숫자가 바뀐다. 판매 인기순일 때 =>8 ex) https://browse.gmarket.co.kr/search?keyword=%eb%a7%88%ec%8a%a4%ed%81%ac&s=8 낮은 가격순일 때 =>1 Q2.G마켓에서 별점에 대한 태그와 선택자 파악 태그 : span class="image__awards-points"
2022.03.16
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링편 7일차
코드 결과
2022.03.16
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링편 6일차
파이썬으로 HTML 코드 가져오기
2022.03.14
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링 5일차
1.코뮤 div#cafe-info-data div.ellipsis 2.Since 2020.03.03 div#cafe-info-data div.thm 3.카페소개 div#cafe-info-data div.info-view
2022.03.14
@himy799님이 포스트를 업데이트했습니다.
포스트
파이썬 크롤링 4일차
2022.03.14
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링 4편
모든 게시글 > div 게시글 1개 > div 닉네임 > strong 글 내용 > p
2022.03.09
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링편 3일차
내가 크롤링하고 싶던 사이트는 네이버 쇼핑 사이트였다. 얻고싶은 데이터: 옷의 가격 크롤링의 유형: 정적데이터
2022.03.08
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링편 2일차
최근 로또 당첨 번호(번호 7개) 크롤링 정적 크롤링: 로그인과 같이 사전 작업 필요없이 한 페이지 내에서 당첨번호 7가지를 모두 확인 할 수 있기 때문에 번역기에서 언어 번역 결과 크롤링 동적 크롤링: 페이지 내부에서 번역하고자 하는 내용을 '입력'하고 번역하기를 '클릭'하는 등을 통해 결과를 도출하기 때문에 페이지 내부에서 조작이 필요하다.
2022.03.07
@himy799님이 새 포스트를 작성했습니다.
파이썬 크롤링편 1일차
저는 네이버 쇼핑 사이트를 크롤링 해보고 싶습니다. 옷에 대한 관심이 많아서요! 네이버쇼핑 (naver.com)