expert7kr1332
@expert7kr1332
Reviews Written
3
Average Rating
5.0
Posts
Q&A
PYQT5-sip ์๋ฌ
์ ๊ธ๊ณผ ๊ด๋ จ์ด ์์ ์ ์์ง๋ง...์ ๋ ์ค์น์๋ฌ๊ฐ ๋์ ํด๊ฒฐํ์ต๋๋ค.๊ทธ๋ฌ๋ ์ด๊ธ์ ์ค์น ์๋ฌ๋ ์๋๊ณ import ์๋ฌ๋ค์.๋ค์์ ์ฐธ๊ณ ๋ก ์ฌ๋ฆฝ๋๋ค.ERROR: Could not install packages due to an OSError์ด๊ฒ์ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์ปด๋ฉ๋๋ฅผ ์คํํ์ฌ ๋ช ๋ น์ ์คํํ๋ผ๋ ๋ป์ ๋๋ค. ์ค์น์คerror: Microsoft Visual C++ 14.0 or greater is required.์ด๋ฐ ๋ฌธ๊ตฌ๊ฐ ๋์ค๋ฉด...C++๋ฅผ ์ค์นํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.https://visualstudio.microsoft.com/visual-cpp-build-tools/
- 0
- 2
- 5.3K
Q&A
๊ด๊ณ ์ํ ์ธ ํ๊ธฐ ๋ฌธ์๋๋ฆฝ๋๋ค.
badge rocket์ด๋ ๊ฒ ์ด๋ฆ ์ฌ์ด์ ๊ณต๋ฐฑ์ด ์์ผ๋ฉด 2๊ฐ์ด๊ณ ,bage_rocket ์ด๋ bageRocket ์ด๋ฐ์์ผ๋ก ๊ณต๋ฐฑ์์ด ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด 1๊ฐ์ ๋๋ค. ์ฌ๊ณผ๋ฅผ ์ ์ฌ๊ณผ๋ผ๊ณ ํ์ง ๊ฐ์ด๋ผ๊ณ ํ๋ฉด ์๋๋? ํ๊ณ ์ด์ ๋ฅผ ์๊ฐํ์ง ์๋ฏ์ด ์ด๊ฒ์ ์ฝ์์ ๋๋ค. ๊ณต๋ฐฑ์ด ์์ผ๋ฉด ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๋๋์ด์ 2๊ฐ๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.๋ง์ฝ,class='badge rocket star'์ด๋ฐ์์ผ๋ก ๋์ด ์๋ค๋ฉด 2๊ฐ์ ๊ณต๋ฐฑ์ผ๋ก ํ์คํธ๊ฐ ๋๋์ด์ ธ ์๊ธฐ ๋๋ฌธ์ 3๊ฐ์ ๋๋ค. ์ฝ์์ ์ดํดํ๋ ๊ฒ์ด ์๋๋ผ ์ธ์ฐ๋ ๊ฒ์ ๋๋ค.
- 2
- 2
- 410
Q&A
์ ํ๋ธ ํฌ๋กค๋ง/ํค์๋ ๋ณ ํฌ๋กค๋ง ๋ฐฉ๋ฒ์์ ์๋ฌ๋ฐ์ํฉ๋๋ค.
views = info.select_one("div#metadata-line > span:nth-of-type(1)").text date = info.select_one("div#metadata-line > span:nth-of-type(2)").text๊ฐ์ฌํฉ๋๋ค. ^^ํด๋ณด๋ ์๋ฉ๋๋ค.
- 1
- 3
- 960
Q&A
์ ํ๋ธ ํฌ๋กค๋ง/ํค์๋ ๋ณ ํฌ๋กค๋ง ๋ฐฉ๋ฒ์์ ์๋ฌ๋ฐ์ํฉ๋๋ค.
# ์กฐํ์ views_date = info.select_one("div#metadata-line").text.split("โข")[1].strip().replace("์กฐํ์ ", "") views = "์กฐํ์ " + views_date.split("ํ")[0] + "ํ" # ๋ ์ง date = views_date.split("ํ")[1]์ด๋ ๊ฒ ํด์ ํด๊ฒฐํ์ต๋๋ค.
- 1
- 3
- 960
Q&A
์ฐ์ ๋ด์ค ํฌ๋กค๋ง 8:52 ๋ถํฐ ๋งํ๋๋ค
2023.02.20.์ ํ์ #articeBody๊ฐ ๋ง๋ค์.์ ๋ ์์ด๋์ ํด๋์ค์ด๋ฆ์ด ๋ฐ๋์ด์๋ค๋ฅธ ๊ฒ์ผ๋ก ํ๋๋ฐ์. ํด๋์ค๋ฅผ .ํด๋์ค๋ช ์ผ๋ก ํด์ผ ํ๋๋ฐ, #ํด๋์ค๋ช ์ผ๋กํด์ ๊ฒฐ๊ณผ๊ฐ'NoneType' object has no attribute 'text'์ด๋ ๊ฒ ๋์์ ๋ฐ๋์ ์ ์ ์๋๋ ํ๊ณ ์์ธ์ ์ฐพ์์ต๋๋ค.ํด๋์ค๋ .์์ด๋๋ #์ด๊ฒ๋ถํฐ ํ์ธํด์ผ ๊ฒ ์ต๋๋ค.
- 2
- 3
- 621
Q&A
์๋ณธ ์์ค ๋ถํ ๋๋ฆฝ๋๋ค.
from selenium import webdriver # from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By import time import pyautogui import pyperclip # ํฌ๋กฌ ๋๋ผ์ด๋ฒ ์๋ ์ ๋ฐ์ดํธ # from webdriver_manager.chrome import ChromeDriverManager # ๋ธ๋ผ์ฐ์ ๊บผ์ง ๋ฐฉ์ง chrome_options = Options() chrome_options.add_experimental_option("detach", True) # ๋ถํ์ํ ์๋ฌ ๋ฉ์์ง ์์ ๊ธฐ chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) # service = Service(executable_path=ChromeDriverManager().install()) # ์ต์ ๋๋ผ์ด๋ฒ๋ฅผ ์๋์ผ๋ก ์ค์น # driver = webdriver.Chrome(service=service) driver = webdriver.Chrome(options=chrome_options) driver.implicitly_wait(5) # ์นํ์ด์ง๊ฐ ๋ก๋ฉ๋ ๋๊น์ง 5์ด ๊ธฐ๋ค๋ฆผ driver.maximize_window() # ํ๋ฉด ์ต๋ํ # ์นํ์ด์ง ์ด๊ธฐ url = "https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com" driver.get(url) # ์ฒ์ ์คํ์ ์๊ฐ์ด ์ข ๊ฑธ๋ฆผ(๋ค์ด๋ก๋+์ค์น) # ์์ด๋ ์ ๋ ฅ์ฐฝ id = driver.find_element(By.CSS_SELECTOR, "#id") id.click() # id.send_keys("์์ด๋") pyperclip.copy("id1234") pyautogui.hotkey("ctrl", "v") time.sleep(2) # ๋น๋ฐ๋ฒํธ ์ ๋ ฅ์ฐฝ pw = driver.find_element(By.CSS_SELECTOR, "#pw") pw.click() # pw.send_keys("๋น๋ฐ๋ฒํธ") pyperclip.copy("pw1234") pyautogui.hotkey("ctrl", "v") time.sleep(2) # log.login login_btn = driver.find_element(By.CSS_SELECTOR, "#log\.login") # \. : ์ด์ค์ผ์ดํ ๋ฌธ์ login_btn.click() ๋ค์ด๋ฒ ์๋ ๋ก๊ทธ์ธ ๋ ๋ถ๋ถ๊น์ง์ ์ฝ๋์ ๋๋ค.ํฌ๋กฌ์น๋๋ผ์ด๋ฒ ์๋ ์ ๋ฐ์ดํธ ๋ถ๋ถ์ ๊ฐ์์ ๊ฐ์ด ํ์ง ์์๋ ๋๊ฒ ๋ฐ๋ ๊ฒ ๊ฐ์์ ์ฃผ์์ฒ๋ฆฌํ์ต๋๋ค. ์ ์ฝ๋๋๋ก ํด์ ๊ทธ๋ฐ์ง...๋ค์ ๊ฐ์ ์งํ์ค ํฌ๋กฌ ๋๋ผ์ด๋ฒ ๋ฒ์ ผ์ด ๋ง์ง ์๋ค๋ ๋ฉ์์ง๊ฐ ๋จ๊ฒ ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฐ ๊ฒฝ์ฐ... ๋ค์ ์๋ ์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.from selenium import webdriver import chromedriver_autoinstaller # pip install chromedriver-autoinstaller chromedriver_autoinstaller.install() driver = webdriver.Chrome() driver.implicitly_wait(5) driver.get("https://www.naver.com/")์ ์ฝ๋ ์คํ์ ConnectionRefusedError๊ฐ ๋จ๋ ๊ฒฝ์ฐ VSCode ํธ์ง๊ธฐ๋ฅผ ๊ป๋ค๊ฐ ๋ค์ ์คํํ๋ฉด ํด๊ฒฐ๋์์ต๋๋ค. ์๋ง ๋๋ผ์ด๋ฒ ์ค์น์ค ์ ์์ ํด์ ์๋ฌ๊ฐ ๋๋ ๊ฒฝ์ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
- 1
- 2
- 477
Q&A
๋ค์๊ณผ ๊ฐ์ error๊ฐ ๋๋๋ฐ ์์ธ์ ๋ชป์ฐพ๊ฒ ๋ค์..
from selenium import webdriver # from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By import time import pyautogui import pyperclip # ํฌ๋กฌ ๋๋ผ์ด๋ฒ ์๋ ์ ๋ฐ์ดํธ # from webdriver_manager.chrome import ChromeDriverManager # ๋ธ๋ผ์ฐ์ ๊บผ์ง ๋ฐฉ์ง chrome_options = Options() chrome_options.add_experimental_option("detach", True) # ๋ถํ์ํ ์๋ฌ ๋ฉ์์ง ์์ ๊ธฐ chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) # service = Service(executable_path=ChromeDriverManager().install()) # ์ต์ ๋๋ผ์ด๋ฒ๋ฅผ ์๋์ผ๋ก ์ค์น # driver = webdriver.Chrome(service=service) driver = webdriver.Chrome(options=chrome_options) driver.implicitly_wait(5) # ์นํ์ด์ง๊ฐ ๋ก๋ฉ๋ ๋๊น์ง 5์ด ๊ธฐ๋ค๋ฆผ driver.maximize_window() # ํ๋ฉด ์ต๋ํ # ์นํ์ด์ง ์ด๊ธฐ url = "https://nid.naver.com/nidlogin.login?mode=form&url=https%3A%2F%2Fwww.naver.com" driver.get(url) # ์ฒ์ ์คํ์ ์๊ฐ์ด ์ข ๊ฑธ๋ฆผ(๋ค์ด๋ก๋+์ค์น) # ์์ด๋ ์ ๋ ฅ์ฐฝ id = driver.find_element(By.CSS_SELECTOR, "#id") id.click() # id.send_keys("์์ด๋") pyperclip.copy("id1234") pyautogui.hotkey("ctrl", "v") time.sleep(2) # ๋น๋ฐ๋ฒํธ ์ ๋ ฅ์ฐฝ pw = driver.find_element(By.CSS_SELECTOR, "#pw") pw.click() # pw.send_keys("๋น๋ฐ๋ฒํธ") pyperclip.copy("pw1234") pyautogui.hotkey("ctrl", "v") time.sleep(2) # log.login login_btn = driver.find_element(By.CSS_SELECTOR, "#log\.login") # \. : ์ด์ค์ผ์ดํ ๋ฌธ์ login_btn.click()
- 1
- 2
- 2.2K
Q&A
์ ์๋ ๊ฒ์์ฐฝ ํด๋ฆญ์ ๋ชปํด์ ใ
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import csv browser = webdriver.Firefox() # firefox ๋ธ๋ผ์ฐ์ ๋ฅผ ๋จผ์ ์ค์นํด์ผ ์ค์ผ ์๋ํจ browser.implicitly_wait(10) # ํ์ด์ง๊ฐ ๋ก๋ฉ๋ ๋๊น์ง ์ต๋ 10์ด๊น์ง ๊ธฐ๋ค๋ ค์ค browser.get("https://www.naver.com") # ์ผํ๋ฉ๋ด ํด๋ฆญ browser.find_element(By.CSS_SELECTOR, 'a.nav.shop').click() time.sleep(2) # ๊ฒ์์ฐฝ ํด๋ฆญ search = browser.find_element(By.CSS_SELECTOR, 'input._searchInput_search_text_fSuJ6') search.click() # ๊ฒ์์ด ์ ๋ ฅ search.send_keys('์์ดํฐ 13') search.send_keys(Keys.ENTER) # enter ์ ๋ ฅ time.sleep(1) # ์คํฌ๋กค ์ ๋์ด before_h = browser.execute_script("return window.scrollY") # ๋ฌดํ ์คํฌ๋กค while True: # ๋งจ ์๋๋ก ์คํฌ๋กค ๋ด๋ฆฐ๋ค. browser.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END) # Endํค # ์คํฌ๋กค ์ฌ์ด ํ์ด์ง ๋ก๋ฉ ์๊ฐ time.sleep(1) # ์คํฌ๋กค ํ ๋์ด after_h = browser.execute_script("return window.scrollY") if after_h == before_h: break before_h = after_h # ํ์ผ ๋ง๋ค๊ธฐ(csv) f = open(r"D:\python_Workspace\crawling\startCoding_crawling\03_๋ค์ด๋ฒ_์ผํ_ํฌ๋กค๋ง\data.csv", "w", encoding='cp949', newline='') csvWriter = csv.writer(f) # ์ํ ์ ๋ณด div items = browser.find_elements(By.CSS_SELECTOR, ".basicList_info_area__TWvzp") for item in items: name = item.find_element(By.CSS_SELECTOR, ".basicList_title__VfX3c").text try: price = item.find_element(By.CSS_SELECTOR, ".price_num__S2p_v").text # ํ๋งค์ค์ง๋ ๊ฒ ์์ except: price = "ํ๋งค์ค๋จ" link = item.find_element(By.CSS_SELECTOR, ".basicList_title__VfX3c > a").get_attribute('href') print("\n" + name, price, link) csvWriter.writerow([name, price, link]) # ๋ฐ์ดํฐ ์ฐ๊ธฐ
- 1
- 2
- 519
Q&A
Exception has occurred: SSLError ์ด๋ฐ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด ์๋ฌ๋๋ฌธ์ ๋ฐ๋์ ๋์ ๊ฒ์ํ ๊ฒ ๊ฐ์ต๋๋ค.์์ธ์ ์๋์ฝ๋ค ์ด์๊ฐ ์๋๊ฐ ์๊ฐ๋ฉ๋๋ค.๊ฒ์ํด๋ณด๋ ์ ์ ๊ฐ์ ์๋ฌ๋ก 5์ผ์ ์ ์ด์๋ฅผ ์ ๊ธฐํ๋ค์.๊ทธ๋์ ์๋์ฝ๋ค ๊ฐ์ํ๊ฒฝ์ด ์๋...ํ์ด์ฌ ์์ฒด์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฐ์ํ๊ฒฝ์ ๋ง๋ค๊ณ ์ฝ๋๋ฅผ ์คํํ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค. ์ฐธ๊ณ ๋ฐ๋๋๋ค.
- 0
- 1
- 2K
Q&A
Beatifulsoup ๋ง๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์์๊น์?
๋ค์ชฝ ๊ฐ์์์ ๋์ค๋ selenium์ค์นํด์ ํ ์๋ ์์ต๋๋ค.
- 0
- 1
- 353




