묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
RISS논문크롤링하고 있는데 서버 거부..
서버 거부가 되어서 헤더추가까지 했는데도... 여전히 서버 거부인 듯하네요.. 강사님 그대로 따라 했는데.. 왜 이렇죠.ㅠㅠ import requests from bs4 import BeautifulSoup import pandas as pd # 파라미터 종류가 많은 경우 꿀팁 param = { 'isDetailSearch': 'N', 'searchGubun': 'true', 'viewYn': 'OP', 'strQuery': '패션 인공지능', 'order': '/DESC', 'onHanja': 'false', 'strSort': 'RANK', 'iStartCount': 0, 'fsearchMethod': 'search', 'sflag': 1, 'isFDetailSearch': 'N', 'pageNumber': 1, 'icate': 're_a_kor', 'colName': 're_a_kor', 'pageScale': 100, 'isTab': 'Y', 'query': '패션 인공지능', } reponse = requests.get('https://www.riss.kr/search/Search.do',params=param) html = reponse.text soup = BeautifulSoup(html, 'html.parser') articles = soup.select('.srchResultListW > ul > li') # 헤더가 필요한 경우(서버가 막힌 경우) header = { 'User-Agent' : 'Mozilla/5.0', 'Referer' : 'https://www.riss.kr/search/Search.do?isDetailSearch=N&searchGubun=true&viewYn=OP&queryText=&strQuery=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5&exQuery=&exQueryText=&order=%2FDESC&onHanja=false&strSort=RANK&p_year1=&p_year2=&iStartCount=0&orderBy=&mat_type=&mat_subtype=&fulltext_kind=&t_gubun=&learning_type=&ccl_code=&inside_outside=&fric_yn=&db_type=&image_yn=&gubun=&kdc=&ttsUseYn=&l_sub_code=&fsearchMethod=search&sflag=1&isFDetailSearch=N&pageNumber=1&resultKeyword=&fsearchSort=&fsearchOrder=&limiterList=&limiterListText=&facetList=&facetListText=&fsearchDB=&icate=re_a_kor&colName=re_a_kor&pageScale=100&isTab=Y®nm=&dorg_storage=&language=&language_code=&clickKeyword=&relationKeyword=&query=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5', } for article in articles[:1]: title = article.select_one('.title > a').text link = 'https://www.riss.kr' + article.select_one('.title > a').attrs['href'] # 상세 페이지로 요청(페이지 안에 들어가야 내용이 있는 경우) response = requests.get(link, headers=header)# 여기서 헤더 추가 html = reponse.text soup = BeautifulSoup(html, 'html.parser') print(soup) press = soup.select_one('.infoDetailL > ul > li:nth-of-type(2) > div').text #print(title,link,press)
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
연습문제 2번 질문 있습니다!
연습문제 2번에서 아래 코드로 했을 때 안되는데 이유가 뭔지 모르겠습니다! 어차피 1개라서 반복문을 쓰지 않아도 될까 했는데 안되네요..import requests from bs4 import BeautifulSoup url = 'https://davelee-fun.github.io/' res = requests.get(url) soup = BeautifulSoup(res.content, 'html.parser') items=soup.select('.sitetitle') print(items.get_text())(+)print(item.get_text()) 했을때는 잘 추출되는데 item은 선언한적이 없는데 왜 되는걸까요~?
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
[진짜 쉬운 책 추천] 크롤링부터 너무 어렵네여
정말 쉽게 볼 책 추천해주실 수 있나요?? 강의 듣고 책으로도 보면 조금 더 이해가 쉬울까 하구요
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
2024.08.28 수요일 기준 날씨 정보 가져오기 소스코드입니다 (참고하세요 : ) )
개인적으로 만든거다 보니, 부족한 면이 많습니다. 헷갈리시는 분들이나 조금 어렵다고 느껴지는 분들을 위해서 공유해드려요 !import requests from bs4 import BeautifulSoup ''' [오늘의 날씨] 흐림, 어제보다 00도 높아요 현재 00도 (최저 00도 / 최고 00도) 오전 강수확률 00% / 오후 강수확률 00% 미세먼지 좋음 초미세먼지 좋음 ''' def scrape_weather(): print("[오늘의 날씨]") url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%82%A0%EC%94%A8" res = requests.get(url) res.raise_for_status() soup = BeautifulSoup(res.text, "lxml") cast = soup.find("p", class_="summary").get_text() curr_temp = soup.find("div", class_="temperature_text").get_text().replace("현재 온도", "") # 현재온도 targets = soup.find_all("li", class_="week_item today") min_temp = targets[0].find("span", class_="lowest").get_text() # 최저 온도 max_temp = targets[0].find("span", class_="highest").get_text() # 최고 온도 morning_and_afternoon = targets[0].find_all("span", class_="weather_left") morning_rain_rate = morning_and_afternoon[0].get_text() # 오전 강수확률 afternoon_rain_rate = morning_and_afternoon[1].get_text() # 오후 강수확률 dust_list = soup.find_all("li", class_="item_today") pm10 = dust_list[0].get_text() # 미세먼지 pm25 = dust_list[1].get_text() # 초미세먼지 # 출력 print(cast) print(f"현재 {curr_temp} ({min_temp} / {max_temp})") print(f"강수확률 {morning_rain_rate.strip()} / {afternoon_rain_rate.strip()}") print() print(f"{pm10.strip()}") print(f"{pm25.strip()}") print() if __name__ == "__main__": scrape_weather() # 오늘의 날씨 정보 가져오기
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
24년, 부동산 퀴즈 코드입니다. 참고하세요!!
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from webdriver_manager.chrome import ChromeDriverManager from bs4 import BeautifulSoup # Setup Chrome options options = webdriver.ChromeOptions() options.add_experimental_option("detach", True) options.add_argument("--user-agent=''") # Initialize the browser browser = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) # 옵션 추가 - 웹페이지 최대화 browser.maximize_window() # 원하는 웹사이트로 이동 url = "https://realty.daum.net/home/apt/danjis/38487" browser.get(url) # 모든 요소가 로드될 때까지 대기 (최대 10초) WebDriverWait(browser, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "css-1dbjc4n"))) # 데이터 뽑기 시작 soup = BeautifulSoup(browser.page_source, "lxml") # 매물 정보 가져오기 targets = soup.find_all("div", class_="css-1dbjc4n r-1awozwy r-s4x47v r-18u37iz r-17s6mgv r-1m04atk") for idx, target in enumerate(targets): # 가격과 거래 방법 추출 price = target.find("div", class_="css-1563yu1 r-aw03qq r-1wbh5a2 r-1w6e6rj r-159m18f r-1b43r93 r-b88u0q r-rjixqe r-13hce6t r-1ff274t r-13wfysu r-q42fyq r-1ad0z5i") if price: plate = price.get_text().split(" ") use = plate[0] final_price = '' for index in range(1, len(plate)): final_price += plate[index] else: continue # 면적과 층수 정보 추출 area_and_floors = target.find_all("div", class_="css-1563yu1 r-1dnsj32 r-1wbh5a2 r-1w6e6rj r-159m18f r-n6v787 r-majxgm r-14yzgew r-fdjqy7 r-13wfysu r-q42fyq r-1ad0z5i") if len(area_and_floors) >= 2: area = area_and_floors[0].get_text() floor = area_and_floors[1].get_text()[-3:] else: area = "N/A" floor = "N/A" print("=" * 10 + " 매물 {0} ".format(idx) + "=" * 10) print(f"거래 : {use}") print(f"가격 : {final_price}".strip()) print(f"면적 : {area}".strip()) print(f"층 : {floor}".strip()) print() browser.quit()
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
git hub에 push할때 user-agent가 노출되도 상관이 없나요 ?
git hub에 저의 user-agent가 노출되어도 상관이 없을까요 ? git hub에 소스코드를 push하면서 진행을 하고 있는데 괜찮을까요 ?
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
세팅
안녕하세요. 강의 그대로 따라해도 세팅부터 막히는데 어떻게 하나요? 파일을 만들고 나서 셀에 입력하는 화면이 안나오는데요. 강의에서 python3으로 들어가면 강의에서는 셀을 입력할 수 있도록 나오는데 저는 python3이라는게 뜨지를 않습니다.
-
미해결[웹 개발 풀스택 코스] Node.js 프로젝트 투입 일주일 전 - 기초에서 실무까지
sql버전안맞음
저의 경우 client sql 버전이 안맞다고 나옵니다 workbench는 8.0Mysql 9.0 Configurator로 설치했습니다 stackoveflow에서 찾아보니ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Where root as your user localhost as your URL and password as your passwordThen run this query to refresh privileges:flush privileges;Try connecting using node after you do so.If that doesn't work, try it without @'localhost' part. 이런 답변이 있는데 어떻게 적용하는지 알 수 있을까요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
SyntaxWarning: invalid escape sequence '\.' 에러가
제가 뭘 건든건지 잘되던게 갑자기SyntaxWarning: invalid escape sequence '\.'에러가 출력됩니다.셀레니움 css셀렉터에서 검색 카피해와서 붙였는데 그중에 \ 들어가면 에러를 내보네요.. 이유를 모르겠습니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
240825현재 네이버쇼핑에서 "닭가슴살"검색후 a 태그를 못가져오네요
11.네이버 쇼핑 크롤링의 3편 데이터 추출하기(복작한 HTML)구조 편에서 # 나무태그 선택자 만들기soup.select(".product_item__MDtDF")까지 하더라도 a 태그에 해당되는 부분을가져오지 못합니다. 네이버 쇼핑에서 크롤링을 차단하는 것인지, 다른 방법으로크롤링하는 방법은 없는건가요?
-
미해결Node.js로 웹 크롤링하기
try-puppeteer.appspot.com 을 사용할 수 없나요?
try-puppeteer.appspot.com 이 사이트가 현재는 접속이 안되네요이런 기능을 할 수 있는 유사한 사이트가 더 있을까요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
서버 요청 거절 시 해결하는 방법(헤더)관련
안녕하세요. 1:44 부분 따라 해보니 에러메세지는 동일하나 , 그 위에 프린트되는 soup 내용은 뜨질않습니다.우선 에러메세지는 동일해서 이어서 따라해보니 (헤더 설정 등)런 돌리니 런 완료 표시는 뜨는데프린트 되는 내용이 없습니다;; 지금까지 잘 따라왔는데 여기서 막히네요.. .
-
미해결Python Streamlit을 활용한 대시보드 만들기 (feat. 빅데이터 분석기사 실기 준비)
5단계 강의 코드관련(Streamlit st.data_editor() & st.column_config)
선생님 안녕하세요~좋은 강의 제공해주셔서 감사드립니다. Github에 해당 강의 코드가 없는것 같아 확인차 문의드립니다. 감사합니다.
-
미해결Node.js로 웹 크롤링하기
크롬 확장프로그램 관련 질문드립니다.
본 강의와 관련이 없을 수 있는데,크롤링 공부를 하는 중에 궁금한게 생겨 질문드립니다.puppeteer로 생성한 브라우저에서 크롬 확장프로그램을 설치할 수 있는 방법이 있나요?있다면 어떤 키워드로 검색을 해서 찾아봐야하는지 알려주시면 감사하겠습니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
SSLError
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.requests.get 에서 SSL Error가 나면 어떻게 해야할까요 ? verify=False 옵션을 줘도 안되네요 ㅜ
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
셀레니움 driver 오류
from selenium import webdriver driver = webdriver.Chrome()강의랑 동일하게 입력하였는데요. Traceback (most recent call last): File "C:\Users\tjdwl\anaconda3\Lib\site-packages\selenium\webdriver\common\driver_finder.py", line 38, in get_path path = SeleniumManager().driver_location(options) if path is None else path ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\tjdwl\anaconda3\Lib\site-packages\selenium\webdriver\common\selenium_manager.py", line 89, in driver_location args = [str(self.get_binary()), "--browser", browser] ^^^^^^^^^^^^^^^^^ File "C:\Users\tjdwl\anaconda3\Lib\site-packages\selenium\webdriver\common\selenium_manager.py", line 73, in get_binary raise WebDriverException(f"Unable to obtain working Selenium Manager binary; {path}")selenium.common.exceptions.WebDriverException: Message: Unable to obtain working Selenium Manager binary; C:\Users\tjdwl\anaconda3\Lib\site-packages\selenium\webdriver\common\windows\selenium-manager.exeThe above exception was the direct cause of the following exception:Traceback (most recent call last): File "C:\Program Files\JetBrains\PyCharm Community Edition 2024.1\plugins\python-ce\helpers\pydev\pydevd.py", line 1535, in _exec pydev_imports.execfile(file, globals, locals) # execute the script ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\JetBrains\PyCharm Community Edition 2024.1\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile exec(compile(contents+"\n", file, 'exec'), glob, loc) File "C:\Users\tjdwl\PycharmProjects\Selenium\section6\selenium_basic.py", line 3, in <module> driver = webdriver.Chrome() ^^^^^^^^^^^^^^^^^^ File "C:\Users\tjdwl\anaconda3\Lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 45, in init super().__init__( File "C:\Users\tjdwl\anaconda3\Lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 49, in init self.service.path = DriverFinder.get_path(self.service, options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\tjdwl\anaconda3\Lib\site-packages\selenium\webdriver\common\driver_finder.py", line 41, in get_path raise NoSuchDriverException(msg) from errselenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for chrome using Selenium Manager.; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_locationpython-BaseException해당 오류가 발생합니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
셀레니움 headless 옵션 추가시 크롤링 안되는 현상
안녕하세요.셀레니움으로 개발된 프로그램을 GUI로 감싸서 만들어 보려고 하고 있습니다. 아래 코드에서 크롬 창이 뜨도록 하면 잘 실행되면 elem에 데이터가 들어옴을 확인할 수 있습니다. 1번을 확인 후 headless 옵션을 주고 실행하면 창은 뜨지 않고 실행되나, 데이터를 가져오지 못합니다. 구글링도 해보고, GPT도 물어봤지만 답을 찾을 수 없어서 문의 드리게 되었습니다. 확인 부탁드립니다. from selenium import webdriver # from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # 크롬 드라이버 자동 업데이트을 위한 모듈 from selenium.webdriver.common.by import By # from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver import ActionChains # 스크롤시 사용 from selenium.webdriver.support import expected_conditions as EC import time from bs4 import BeautifulSoup as bts import pandas as pd import os from datetime import datetime ################################### # Window 열고, 네이버 지도에서 검색 ################################### options = webdriver.ChromeOptions() options.add_argument('headless') # service = Service(ChromeDriverManager().install()) # driver = webdriver.Chrome(options=options) driver = webdriver.Chrome() # driver = webdriver.Chrome(ChromeDriverManager().install()) action = ActionChains(driver) keyword = '서울 강남구 정보통신' url = f'https://map.naver.com/p/search/{keyword}' driver.get(url) # WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="searchIframe"]'))) time.sleep(20) search_iframe() elem = driver.find_elements(By.CSS_SELECTOR, '.place_bluelink.C6RjW > span.YwYLL') # 이름 name_list = [e.text for e in elem] elem
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
튜플 89번 문제 질문
튜플 89번 코드 전체에서quot, rem = quot_and_rem(3, 10)만 떼서 다음 셀에서 따로 실행해주고quot를 실행하면 0이 나오는데rem은 실행하면 어떤 결과도 나오지 않는데요혹시 89번 코드처럼def quot_and_rem(x, y): quot = x // y rem = x % y return quot, remquot, rem = quot_and_rem(3, 10)을 한 셀에 실행해야 되어야 하는지, 위에 def값을 선언했기 때문에 제가 실행한 대로 따로 셀에 quot, rem = quot_and_rem을 실행하면 안되는 이유가 있을까요?감사합니다~
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
네이버 로그인시 접근 방식에 대해 궁금증이 생겼습니다.
샐러리움 모바일 상태에서 네이버 로그인하려는데 [1번: 네이버 메인화면에서 바로 로그인 사이트 주소로 타이핑 하여 들어가는 방법]과 [2번 : 네이버 모바일에서 하나하나 클릭하는 코드를 만들어서 로그인 화면으로 들어가는 방법] 2가지 방식을 알게 되었습니다.그런데 1번 방법으로 접근할 경우 iP보안 란이 뜹니다. 내용을 읽어보면 이걸 무시하고 진행하기 보다는 해제한 상태에서 진행하는 것이 사전에 문제를 차단할 수 있는 방법으로 보입니다. 반면 2번에는 일너 ip보안 창이 나오지 않는 것을 알 수 있습니다. (생략 되는 건지 어떤건지는 모르겠습니다 )그렇다면 1번의 방식으로 접근하는 것이 크롤링을 덜 차단당 할 수 있는 안전한 방법인가요?1. https://nid.naver.com/nidlogin.login?mode=form&url=https://m.naver.com https://nid.naver.com/nidlogin.login?svctype=262144&url=https%3A%2F%2Fm.naver.com%2Fna%2F
-
미해결파이썬으로 뭘 만들지? 남박사의 파이썬 알쓸파잡
urllib.error.HTTPError: HTTP Error 403: Forbidden 관련
동영상 강의가 너무 오래전꺼라 다 막힌거 아닌가요? urllib.error.HTTPError: HTTP Error 403: Forbidden 이렇게 나오는데 어떻게 해야하나요?