kmc0487
2022.03.28
@kmc0487님이 새 포스트를 작성했습니다.
15일차 : 자유로운 크롤링
벅스, 멜론, 지니 3사의 차트들을 모두 크롤링 해와 새로운 통합 차트를 만들었습니다. 벅스같은 경우에는 기존 크롤링 코드로 잘 되었는데 멜론과 지니는 왜인지 기존 크롤링 방식으로는 안되어 다른 크롤링 방식을 이용해 크롤링해왔습니다. # 벅스, 멜론, 지니 3사의 통합 음악 차트 # 1위부터 100위까지 가중치를 매겨 가중치가 높은 순으로 정렬 import requests import bs4 SongDict = {} def GetReadyCrawling(URL):     raw = requests.get(URL)     global html     html = bs4.BeautifulSoup(raw.text, 'html.parser') def SolveReadyCrawling(URL):     user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"     hdr = {'User-Agent':user_agent}     raw = requests.get(URL, headers=hdr)     global html2     html2 = bs4.BeautifulSoup(raw.text, 'html.parser') def AddSongDict(title, rank):     if title not in SongDict.keys():         SongDict[title] = rank     else:         SongDict[title] += rank #벅스 크롤링 BUGS = "https://music.bugs.co.kr/chart" GetReadyCrawling(BUGS) box = html.find('table', {'class':'list trackList byChart'}) songs = box.find_all('tr', {'rowtype':'track'}) rank = 100 for song in songs[:100]:     title_box = song.find('p', {'class':'title'})     title = title_box.find('a').text     title = title.strip()     AddSongDict(title, rank)     rank -= 1 # 멜론 크롤링 : (참고) https://kin.naver.com/qna/detail.naver?d1id=1&dirId=104&docId=390515161&qb=66mc66Gg7LCo7Yq4IO2BrOuhpOungQ==&enc=utf8&section=kin.ext&rank=2&search_sort=0&spq=0 MELON = "https://www.melon.com/chart/" SolveReadyCrawling(MELON) songs = html2.find_all('div', {'class':'ellipsis rank01'}) rank = 100 for song in songs[:100]:     title = song.find('a').text     title = title.strip()     AddSongDict(title, rank)     rank -= 1 # 지니 크롤링 GENIE = "https://www.genie.co.kr/chart/top200" SolveReadyCrawling(GENIE) songs = html2.find_all('tr', {'class':'list'}) rank = 100 for song in songs[:100]:     title = song.find('a', {'class':'title ellipsis'}).text     title = title.strip()     AddSongDict(title, rank)     rank -= 1 SortedSong = sorted(SongDict.items(), key = lambda x:x[1], reverse = True) rank = 1 for RankedSong in SortedSong:     print("%d위 : %s" %(rank, RankedSong[0]))         if rank >= 100:         break     rank += 1
kmc0487
2022.03.25
@kmc0487님이 새 포스트를 작성했습니다.
14일차 : 자유로운 크롤링
저는 벅스, 멜론, 지니 3 음악 사의 차트를 크롤링해 각 노래에 가중치를 매겨 통합 차트를 만들 예정입니다. 아래는 일단 벅스 차트만 클로링 한 코드입니다. import requests import bs4 def ReadyCrawling(URL):     raw = requests.get(BUGS)     global html     html = bs4.BeautifulSoup(raw.text, 'html.parser') #벅스 크롤링 BUGS = "https://music.bugs.co.kr/chart" ReadyCrawling(BUGS) box = html.find('table', {'class':'list trackList byChart'}) songs = box.find_all('tr', {'rowtype':'track'}) print("벅스 차트") rank = 1 for song in songs[:10]:     title_box = song.find('p', {'class':'title'})     title = title_box.find('a').text     print("%d위 :" %rank,title)     rank += 1
kmc0487
2022.03.24
@kmc0487님이 새 포스트를 작성했습니다.
13일차 : 한영사전 만들기
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) time.sleep(3) f = open('./my_papago.csv', 'r', encoding="utf-8-sig") rdr = csv.reader(f) next(rdr) driver.find_element(By.CSS_SELECTOR, "button.btn_switch___x4Tcl").click() for row in rdr:     korean = row[1]     driver.find_element(By.CSS_SELECTOR, "textarea#txtSource").send_keys(korean)     driver.find_element(By.CSS_SELECTOR, "button#btnTranslate").click()     time.sleep(1)     output = driver.find_element(By.CSS_SELECTOR, "div#txtTarget")     print(korean, ":", output.text)     driver.find_element(By.CSS_SELECTOR, "textarea#txtSource").clear() driver.close() f.close()
kmc0487
2022.03.22
@kmc0487님이 새 포스트를 작성했습니다.
11일차 : 나만의 번역 사전 만들기
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) URL = "https://papago.naver.com/" driver.get(URL) time.sleep(3) dict = {} while 1:     question = input("번역 할 영단어를 입력 (0을 입력하면 종료됩니다.) : ")         if question == '0':         break     form = driver.find_element(By.CSS_SELECTOR, "textarea#txtSource")     form.send_keys(question)     button = driver.find_element(By.CSS_SELECTOR, "button#btnTranslate")     button.click()     time.sleep(2)     result = driver.find_element(By.CSS_SELECTOR, "div#txtTarget")     dict[question] = result.text     form.clear() print(dict) driver.close()
kmc0487
2022.03.18
@kmc0487님이 새 포스트를 작성했습니다.
9일차 : G마켓 크롤링
저는 파이썬의 사전 기능을 활용하여 구현했습니다. import requests import bs4 arr = {1:"낮은 가격 순", 2:"높은 가격 순", 8:"판매 인기 순", 13:"상품평 많은 순", 3:"신규 상품 순"} print("<G마켓의 마스크 상품 정보>") for key in arr.keys():     URL = "https://browse.gmarket.co.kr/search?keyword=마스크&s=" + str(key)     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("<"+arr[key]+">")     for item in items[:4]:         title = item.find('span', {'class':'text__item'})         price = item.find('strong', {'class' :'text__value'})         print("이름: ", title.text)         print("가격: ",price.text)         print()