inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

에러 확인 좀 부탁드립니다.

미해결

[자동화 완전 정복] 인스타그램 휴대폰, 웹 자동화 프로그램 개발

에러 확인 좀 부탁 드립니다.

  • python
  • selenium
장태훈 댓글 2 좋아요 0 조회수 351

random_move 함수 내용에 대하여 질문 드립니다.

미해결

파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)

강의를 보면 ActionChain(driver).scroll( 이라는 함수를 사용하셨는데 스크롤을 위한 시작점을 선택해서 스크롤 시키는것 같습니다.) 하지만 저도 이 함수를 쓰려고 했지만 해당 함수가 ActionChain 에 안나오는걸로 보여서 나중에 보니 scroll_by_amount로 바뀐거로 보입니다. scroll 을 써야 좀더 사람같은?걸까요? 그리고 ActionChain에 TouchAction 이라는게 보이긴 하는데 터치를 시뮬레이션 할 수 있다면 더 좋을것 같은데 혹시 방법이 있을까요?

  • 웹-크롤링
  • selenium
  • cdp
bictoridb 댓글 2 좋아요 0 조회수 322

apply axis 관련 질문

해결됨

[리뉴얼] 처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part1]

섹션7-2 5분 2초 apply부분에 apply(func, axis = 0)으로 하면 왜 '영어' 행이 하나 더 생기나요?

  • python
  • pandas
tjswn0125 댓글 1 좋아요 0 조회수 313

find로 찾을 때 계속해서 none이 나옵니다.

해결됨

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

안녕하세요. 뷰티풀수프 기초 사용법 수강 중에 잘 안되는 부분이 있어서 질문 남깁니다. 네이버 메인 화면 개발자 모드에서 <span class="service_name">메일</span> 라는 태그를 찾아서 이 태그를 찾기 위해 span = soup.find(class_="service_name", string="메일") print(span) 이렇게 작성했는데 왜 결과값이 none 이 나오는지 이유를 모르겠습니다 ㅠㅠ 그리고 앞의 강의에서 개발자 모드의 element가 아니라 소스보기에서 보이는 코드에서 태그를 검색해서 찾아내는 것(?)이라고 말씀하셨던 것 같은데 제대로 이해한게 맞나요? 소스 보기로 보면 코드가 너무 지저분하게 보이는데 혹시 깔끔하게 볼 수 있는 방법이 있을까요?

  • python
  • 웹-크롤링
  • selenium
  • beautifulsoup
우주사막 댓글 1 좋아요 1 조회수 640

service 관련코드를 지우면 실행이 안되요

미해결

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

저는 selenium 4.14 버전 사용중인데 service 관련 내용들을 지우면 실행이 되지 않는데 뭐가 문제일까요? 아래 오류가 뜹니다. driver = webdriver.Chrome () ^^^^^^^^^^^^^^^^^^ File "c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\localcache\local-packages\python311\site-packages\selenium\webdriver\chrome\ webdriver.py ", line 45, in __init__ super().__init__( File "c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\localcache\local-packages\python311\site-packages\selenium\webdriver\chromium\ webdriver.py ", line 51, in __init__ self.service.path = DriverFinder.get_path(self.service, options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\users\user\appdata\local\packages\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\localcache\local-packages\python311\site-packages\selenium\webdriver\common\driver_ finder.py ", line 41, in get_path raise NoSuchDriverException(msg) from err selenium.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_location

  • python
  • 웹-크롤링
  • selenium
  • beautifulsoup
박정신 댓글 1 좋아요 0 조회수 288

네이버 쇼핑 크롤링 문의

해결됨

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

from bs4 import BeautifulSoup import requests keyword = input("검색할 제품을 입력하세요 : ") url = f"https://search.shopping.naver.com/search/all?query={keyword}" user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36" headers = {"User-Agent" : user_agent} req = requests.get(url, headers = headers) html = req.text soup = BeautifulSoup(html, 'html.parser') items = soup.select(".product_item__MDtDF") print(items) print(len(items)) 네이버 쇼핑 크롤링 중 문의사항이 있어 글 남깁니다 위의 코드 처럼 네이버 쇼핑에서 검색 시 상품 정보 중 product_item__MDtDF를 받아와서 리스트를 만드려고 하는데 크롬 개발자도구에서는 11개로 검색되지만 위의 코드를 실행하여 '모니터'를 검색해보면 len가 1밖에 나오지 않습니다. product_item__MDtDF를 제외하고는 강의 내용과 동일한거 같은데 어디에 문제가 있는 걸까요..?

  • python
  • 웹-크롤링
  • selenium
  • beautifulsoup
김세종 댓글 1 좋아요 1 조회수 570

chromedriver_autoinstaller 설치를 했는데 import가 되지 않아요..

미해결

블로그 자동화 프로그램 개발 강의 (파이썬 + 셀레니움)

안녕하세요. 수업 보면서 따라하고 있는데 처음부터 막히네요... 터미널창에 chromedriver_autoinstaller 설치를 하고 import를 하려고 하는데 수업 화면처럼 자동완성이 되지 않더니 터미널창에서 에러가 납니다. 재설치를 하려고 하면 이미 설치가 되었다고 나오는데, 설치가 된건데 import가 되지 않는건가요? ㅜㅜㅜ

  • python
  • selenium
mangsmell 댓글 2 좋아요 0 조회수 515

5.Bot Detection 피하기(고급편) 질문입니다.

미해결

파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)

options = uc.ChromeOptions() 가져와서 아래쪽에 uc.Chrome () 실행할때 options가 안넣어져 있는데 안넣고 실행하는건가요??? 깃허브에 설명에는 driver = uc.Chrome(options=options) 이렇게 되어 있어 보이는데요?

  • 웹-크롤링
  • selenium
  • cdp
bictoridb 댓글 1 좋아요 0 조회수 587

selenium으로 연 크롬창 안꺼짐

해결됨

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

셀레니움 버전도 3.14?였나 최신걸로 업데이트 하고 써서 웹드라이버 설치하는 것도 안해도 되는 상태인데요. 강의에서는 driver.get(url) 하면 창이 켜졌다 자동으로 꺼지던데 제꺼는 창이 자동으로 안꺼집니다... 뭔가 업데이트로 변경된 부분인가요? 창 안꺼지도록 하는 방법 강의 들으려는데 제꺼는 원래 안꺼져서 당황스럽네요

  • python
  • 웹-크롤링
  • selenium
  • beautifulsoup
김재형 댓글 1 좋아요 0 조회수 893

mac 환경에서 실습할 경우

해결됨

Airflow 마스터 클래스

안녕하세요 mac 환경에서 강의를 수강하려고 합니다. 이러한 경우 wsl 설치 없이 다음 강의로 넘어가면 될까요??

  • python
  • 데이터-엔지니어링
  • airflow
lucli 댓글 1 좋아요 0 조회수 532

theme 적용이 되지 않습니다.

해결됨

실전 프로젝트로 배우는 데이터 앱 만들기 with Python & Streamlit

theme 적용시, 강사님께서 말씀해주신 것처럼 작업 폴더에 .streamlit 폴더를 만들고, 그 안에 config.toml 파일을 만들어 테마 적용을 했지만, 아래의 문구가 발생하며, 태마가 적용이 되지 않습니다. The page that you have requested does not seem to exist. Running the app's main page. 어떤 이유 인지 알려주세요.

  • python
  • streamlit
동현고 댓글 1 좋아요 0 조회수 493

string vs text

해결됨

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

text가 하위 태그에 있는 문자열까지 가져온다는 것은 알겠습니다. 근데 string도 명확한 설명 부탁드립니다.. 강의에서 <a class="logo_naver"> <span class="blind">네 이버</span></a> 이걸로 예를 들었는데.. 공백도 문자열이잖아요. 강의에서도 그렇게 말씀하셨고. 그러면 위 html코드에 string을 불러오면 a태그 뒤의 공백 한칸을 가져와서 " " 이런 공백 한칸으로 이루어진 문자열이 나와야 할 것 같은데 None으로 나오죠.. 문자열인데 왜 None으로 나오는지 잘 모르겠습니다. 엔터가 들어가도 None으로 나오는 것 같은데... text는 알겠는데 string은 설명이 좀 부족한것 같아서 보충 설명 부탁드립니다.

  • python
  • 웹-크롤링
  • selenium
  • beautifulsoup
김재형 댓글 1 좋아요 0 조회수 523

html 출력문제

미해결

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

강의 내용 외 개인적인 실습 사이트의 질문은 답변이 제공되지 않습니다. 문제가 생긴 코드, 에러 메세지 등을 꼭 같이 올려주셔야 빠른 답변이 가능합니다. 코드를 이미지로 올려주시면 실행이 불가능하기 때문에 답변이 어렵습니다. 답변은 바로 제공되지 않을 수 있습니다. 실력 향상을 위해서는 직접 고민하고 검색해가며 해결하는 게 가장 좋습니다. import requests from bs4 import BeautifulSoup url = " https://naver.com " req = requests.get(url) html = req.text print(html) 주피터 노트에서는 실행이 되는데 비쥬얼스튜디오에서는 결과가 이렇게 나왔습니다. PS C:\Users\pw720> & C:/Users/pw720/AppData/Local/Programs/Python/Python311/python.exeon.exe AMD64)] on win32 Python 3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:38:34) [MSC v.1936 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print(html) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'html' is not defined >>> print(html) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'html' is not defined >>> beautifulsoup4설치가 안되는것같아 cmd에서 설치했는데 제대로 안깔려서 안되는건가요?

  • python
  • 웹-크롤링
  • selenium
  • beautifulsoup
pw7208 댓글 2 좋아요 0 조회수 427

완전탐색 1090번 시간초과

미해결

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

예제 문제는 잘 풀리는데 백준에 제출하니까 시간초과가 뜹니다 강의 자료랑 큰 차이는 없어 보이는데 어느 부분을 고쳐야 시간 안에 계산 가능할까요? #include <iostream> #include <cstdlib> using namespace std; int main(int argc, char **argv) { int n; int minX, minY, maxX, maxY; cin >> n; int arr[n][2]; for(int i=0; i<n; i++){ cin >> arr[i][0] >> arr[i][1]; } minX = arr[0][0]; maxX = arr[0][0]; minY = arr[0][1]; maxY = arr[0][1]; for(int i=1; i<n; i++){ if(arr[i][0]>maxX){ maxX = arr[i][0]; } else if(arr[i][0]<minX){ minX = arr[i][0]; } if(arr[i][1]>maxY){ maxY = arr[i][1]; } else if(arr[i][1]<minY){ minY = arr[i][1]; } } int arr_answer[n]; int arr_dis[n]; for(int i=minY; i<=maxY; i++){ for(int j=minX; j<= maxX; j++){ for(int l=0; l<n; l++){ int subY= 0, subX=0; subY = i-arr[l][1]; subX = j-arr[l][0]; arr_dis[l] = abs(subX) + abs(subY); } int sum = 0; for(int k=0; k<n; k++){ sum+=arr_dis[k]; if(i==minY && j ==minX){ arr_answer[k] =sum; } else if(sum < arr_answer[k]){ arr_answer[k] = sum; } } } } for(int i=0; i<n; i++){ cout << arr_answer[i] << " "; } return 0; }

  • python
  • 코딩-테스트
  • 알고리즘
yongyong213 댓글 2 좋아요 1 조회수 614

동시성 부분 추가 공부하면서 헷갈리는 부분 질문 드립니다.

해결됨

넓고 얕게 외워서 컴공 전공자 되기

안녕하세요 선생님! 동시성과 병렬성 관련해 기초가 약해 해당 강의를 들으면서 OS 부족한 부분을 많이 알게되어 도움이 많이되고 있습니다. 다름이 아니라 해당 강좌 범위는 벗어나지만.. 구글링해도 명확하게 해결되지 않아 질문 드립니다. 동시성을 구현하는 방법으로 멀티쓰레드 나 코루틴 방법으로 구현을 할 수있고 멀티쓰레드 방법에서 쓰레드 전환 간 context switch가 많기 때문에 오버헤드도 많아 Coroutine 방법을 많이 쓰고 또한 유저가 이벤트루프(스케쥴링)을 app에서 관리한다는 측면에서 디버그가 유용하다 정도로 이해하고 있습니다. 많은 블로그에서 멀티쓰레드보다 코루틴을 소개하면서 동시성 구현시 코루틴을 더 상위(혹은 좋은) 방법으로 서술이 많이 되어 있더라구요. I/O작업이 빈번할 경우 코루틴이 더 유리하다는 이해가 됩니다. 싱글스레드 + async 싱글스레드 멀티스레드 + async 멀티스레드 2개의 구현방법이 레이어가 다르다(thread와 task)보니 4가지 경우의 수를 적용할 수 있는데 실제 동시성을 적용해야되는 상황이면 어떻게 판단하고 최적의 구현방법(4가지 중 선택)을 적용할 수 있을까요? (파이썬 스택을 쓰고 있으며 GIL도 이해하고 있는 상태입니다.) 다시한번 해당 강의와 조금 벗어난 질문드려 죄송합니다. ( _ _ )

  • python
  • 동시성
  • 병렬성
권설민 댓글 1 좋아요 0 조회수 431

selenium 관련 web push notification 제어 질문

미해결

파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)

선생님 강의 관련 질문은 아니지만 셀리니움 사용 과정에 어려움을 느껴서 질문드립니다... 셀레니움에 두번째 페이지(window_handle[1]) 에서 웹푸시 알림이 뜨는데 크롬 옵션 설정 제어 안됨 (chrome_options.add_argument("--disable-notifications")) send_key(Keys.ENTER) 전송 X 액션체인 X try문으로 WebDriverWait(driver, 10).until (EC.alert_is_present()) , alert.accept() ALERT 인식 못함. 어떤 방법으로 웹푸시 알림 을 확인하거나 취소 할 수 있을까요?

  • python
  • selenium
황민섭 댓글 1 좋아요 0 조회수 604

크롤링 기사 기간 설정

해결됨

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

안녕하세요 뉴스크롤링에서 크롤링 하고자 하는 뉴스의 기간을 정해주려면 response = requests.get(" https://search.naver.com/search.naver?where=news&sm=tab_jum&query=검색어 ") 위 코드의 " " 안에 뉴스기간을 옵션으로 설정하여 검색한 페이지의 URL을 긁어서 넣어주면 되는걸지요? 감사합니다.

  • python
  • 웹-크롤링
cherrykim90 댓글 2 좋아요 0 조회수 1201

해시태그 검색 결과가 수강 내용과 달라서 올려주신 최종 코드가 적용되지 않고 오류가 납니다.

미해결

[자동화 완전 정복] 인스타그램 휴대폰, 웹 자동화 프로그램 개발

안녕하세요! 인프런에서 [인스타그램 휴대폰, 웹 자동화 프로그램 개발]을 수강한 사람입니다. 본 강의를 이용해서 자동화 프로그램을 개발하려고 하는데, insta_web.py의 로직 수행 중 오류가 발생하여 문의드립니다. 현재 문제가 생긴 부분은 다음과 같습니다. 1. insta_web_hashtag_search 함수 부분 : driver.get(f"https://www.instagram.com/explore/tags/{keyword}/") 를 수행하면 인기 게시물이 28개만 뜹니다. 따라서 28개 이상의 링크를 추출하기가 어려운 것으로 보입니다. 수강생들이 이전에 질문한 글을 찾아봤는데 똑같은 질문을 하신 분이 계시더라고요. AI 인턴이 남긴 댓글을 확인하고 설정을 변경하려고 했는데 현재 인스타그램 웹사이트에서는 검색 결과를 최신 게시물로 변경하는 필터를 제공하지 않는 것 같습니다. 이 부분에 대한 피드백을 주시면 감사하겠습니다. 2. insta_web_link_extract 함수 부분 : WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, all_posting_sel))) 에서 오류가 나서 넘어가지 않습니다. 1에서의 변경점때문에 셀렉터를 찾지 못해서 이런 일이 발생한 것 같다고 생각하는데 혼자 봐서는 잘 모르겠네요... 오류 내용은 다음과 같습니다. Traceback (most recent call last): File "C:\Users\user\Desktop\insta_auto_sample\main.py", line 23, in <module> insta_web.insta_web_work(driver, keyword, count) File "C:\Users\user\Desktop\insta_auto_sample\insta_web.py", line 115, in insta_web_work insta_web_link_extract(driver, count) File "C:\Users\user\Desktop\insta_auto_sample\insta_web.py", line 73, in insta_web_link_extract WebDriverWait(driver, 10).until(EC.presence_of_element_located( File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\support\wait.py", line 95, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message: Stacktrace: GetHandleVerifier [0x00007FF722D552A2+57122] (No symbol) [0x00007FF722CCEA92] (No symbol) [0x00007FF722B9E3AB] (No symbol) [0x00007FF722BD7D3E] (No symbol) [0x00007FF722BD7E2C] (No symbol) [0x00007FF722C10B67] (No symbol) [0x00007FF722BF701F] (No symbol) [0x00007FF722C0EB82] (No symbol) [0x00007FF722BF6DB3] (No symbol) [0x00007FF722BCD2B1] (No symbol) [0x00007FF722BCE494] GetHandleVerifier [0x00007FF722FFEF82+2849794] GetHandleVerifier [0x00007FF723051D24+3189156] GetHandleVerifier [0x00007FF72304ACAF+3160367] GetHandleVerifier [0x00007FF722DE6D06+653702] (No symbol) [0x00007FF722CDA208] (No symbol) [0x00007FF722CD62C4] (No symbol) [0x00007FF722CD63F6] (No symbol) [0x00007FF722CC67A3] BaseThreadInitThunk [0x00007FFE73ED7614+20] RtlUserThreadStart [0x00007FFE759E26F1+33] 전체 코드도 첨부합니다. # insta_web.py import time import data import chromedriver_autoinstaller chromedriver_autoinstaller.install() from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys from selenium.webdriver import ActionChains import pyperclip def insta_web_login(driver): try: driver.get("https://www.instagram.com/") id_selector = "#loginForm > div > div:nth-child(1) > div > label > input" WebDriverWait(driver, 10).until(EC.presence_of_element_located( (By.CSS_SELECTOR, id_selector) )) # 인스타그램 로그인 id_input = driver.find_element(By.CSS_SELECTOR, id_selector) id_input.click() time.sleep(0.3) pyperclip.copy(data.id) actions = ActionChains(driver) actions.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform() time.sleep(0.5) pw_selector = "#loginForm > div > div:nth-child(2) > div > label > input" pw_input = driver.find_element(By.CSS_SELECTOR, pw_selector) pw_input.click() time.sleep(0.3) actions = ActionChains(driver) pyperclip.copy(data.pw) actions.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform() time.sleep(0.5) login_btn_selector = "#loginForm > div > div:nth-child(3) > button" login_btn = driver.find_element(By.CSS_SELECTOR, login_btn_selector) login_btn.click() except Exception as e: print(e) print('[에러] insta_web_login > 로그인 에러 발생!') def insta_web_hashtag_search(driver, keyword): try: # 인스타그램 해시태그 검색 시작 search_selector = "#react-root > section > nav > div._8MQSO.Cx7Bp > div > div > div.QY4Ed.P0xOK > input" # WebDriverWait(driver, 10).until(EC.presence_of_element_located( # (By.CSS_SELECTOR, search_selector) # )) time.sleep(3) from urllib import parse # keyword = "고양이인스타" # keyword = parse.quote(keyword) driver.get(f"https://www.instagram.com/explore/tags/{keyword}/") except Exception as e: print(e) print("[에러] insta_web_hashtag_search > 해시태그 검색중 에러 발생!") def insta_web_link_extract(driver, count=100): all_posting_sel = "div[id^='mount_0_0'] > div > div > div > div > div > div > div > div > div > section > main > article > div:nth-child(3) > div" WebDriverWait(driver, 10).until(EC.presence_of_element_located( (By.CSS_SELECTOR, all_posting_sel) )) print("💙💙") all_posting_box = driver.find_element(By.CSS_SELECTOR, all_posting_sel) print("💙💙💙") ''' 목표 링크 n개 추출하기''' links = [] while len(links) < count : try: # 6번 스크롤 내리기(충분히 포스팅 개수가 쌓일만큼 스크롤 하기) for _ in range(6): driver.execute_script("window.scrollBy(0,600);") time.sleep(0.3) # 피드의 href 추출 all_posting_box = driver.find_element(By.CSS_SELECTOR, all_posting_sel) post_links = all_posting_box.find_elements(By.TAG_NAME, "a") for eachLink in post_links: # eachLink # Element Class link = eachLink.get_attribute('href') links.append(link) # 중복 제거 links = set(links) links = list(links) except Exception as e: print(e) print("[에러] insta_web_link_extract > while 에러 발생!") with open('links.txt', "a") as f: for link in links: print(link) f.write(f"{link}\n") def insta_web_work(driver, keyword, count): insta_web_login(driver) insta_web_hashtag_search(driver, keyword) insta_web_link_extract(driver, count)

  • python
  • selenium
해달 댓글 2 좋아요 0 조회수 578

이버 쇼핑 최저가 검색 코드를 ChatGpt에게 문의하는 부분

미해결

ChatGPT 실무에 100% 활용하기

네이버 쇼핑 최저가 검색 코드를 ChatGpt에게 문의하는 부분에서 강사님과 다른 코드를 작성해 답변해 줍니다. import requests from bs4 import BeautifulSoup # Naver 쇼핑에서 특정 제품의 최저 가격 정보를 검색하려면 Python을 사용할 수 있습니다. # 아래는 시작하기 위한 Python 코드 예제입니다. # 특정 제품에 대한 Naver 쇼핑 검색 결과 페이지의 URL을 지정합니다. product_url = ' https://search.shopping.naver.com/search/all?query=여기에_제품_이름_입력 ' # URL로 GET 요청을 보냅니다. response = requests.get(product_url) # 요청이 성공했는지 확인합니다 (상태 코드 200). if response.status_code == 200: # 페이지의 HTML 내용을 파싱합니다. soup = BeautifulSoup(response.text, 'html.parser') # 제품 이름 및 가격과 같은 제품 정보를 포함하는 요소를 찾습니다. product_elements = soup.find_all('div', class_='basicList_info_area__17Xyo') if product_elements: # 최저 가격과 제품 이름을 추적하는 변수를 초기화합니다. lowest_price = None product_name = None for product in product_elements: # 제품 이름과 가격을 추출합니다. name = product.find('a', class_='basicList_link__1MaTN').text.strip() price = product.find('span', class_='price_num__2WUXn').text.strip() # 가격을 정수로 변환합니다 (화폐 기호, 쉼표 등을 제거합니다). price = int(price.replace('원', '').replace(',', '')) # 최저 가격을 찾았거나 또는 최저 가격이 아직 없는 경우 업데이트합니다. if lowest_price is None or price < lowest_price: lowest_price = price product_name = name if lowest_price is not None and product_name is not None: # 최저 가격과 제품 이름을 출력합니다. print(f"'{product_name}' 제품의 최저 가격은 {lowest_price} 원입니다.") else: print("제품 정보를 찾을 수 없습니다.") else: print("페이지에서 제품 정보를 찾을 수 없습니다.") else: print("웹페이지 검색에 실패했습니다. URL 또는 네트워크 연결을 확인하세요.") 이런 코드를 gpt가 제공하는데 어떻게 해야 강사님과 같은 코드가 출력 될까요?

  • python
  • 웹-크롤링
  • selenium
  • chatgpt
jypark22c 댓글 1 좋아요 0 조회수 414

문의 드립니다.

미해결

파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)

# 랜덤 패턴 가지고오기 def get_random_pattern(isMobile=True): ret_pattern = [] if isMobile: with open("./mobile_scroll.txt","r") as f : while True: line = f.readline() if not line: break ret_pattern.append(line.rstrip()) selected_pattern = random.choice(ret_pattern) _,sx,sy,delay = selected_pattern.split("#") if abs(int(sy)) < 15 or float(delay) < 0.25: #너무 적은 값 return get_random_pattern(isMobile) return int(sx), int(sy), float(delay) else: # PC 패턴 with open("./pc_scroll.txt", "r") as f: while True: line = f.readline() if not line: break ret_pattern.append(line.rstrip()) pc_scroll_px = 114 # 100, 114 selected_pattern = random.choice(ret_pattern) _,dx,dy,delay = selected_pattern.split("#") if float(delay) < 0.25: return get_random_pattern(isMobile) return int(dx),int(pc_scroll_px), float(delay) 질문1. 위 패턴에서 pc_scroll_px 를 114로 하는 이유를 잘 모르겠습니다. 저는 모바일 말고 pc로 작업을 해보려고하는데 114씩만 올라갔다 내려갔다 스크롤되는데 전혀 사람처럼 보이지 않고 부자연스러워 보입니다. ㅜ def random_move(driver,direction="down",count=1,isMobile=True): for _ in range(count): # [O] 사람패턴 ~ 사람이 얼마나 스크롤을 움직였는지 # randY = random.randrange(200,300) randX,randY,_delay = get_random_pattern(isMobile) sx = random.randrange(100,270) sy = random.randrange(250,500) if direction == "up": randY = -randY if random.random() > 0.9 : #10%의 확률로 randY = -randY print(f"Scroll 한다 {randY}") ActionChains(driver).scroll_by_amount(0, randY).perform() # [O] 사람패턴 ~ 스크롤 하는 텀 prob = random.random() if prob < 0.5: dt = random.uniform(_delay*0.1, _delay*0.3) elif prob < 0.8: dt = random.uniform(_delay*0.2, _delay*0.6) else: dt = random.uniform(_delay*0.5, _delay*1.2) time.sleep(dt) time.sleep( 0.5) 질문2. 매개변수로 count를 받고있는데 이 부분을 넣은 이유를 정확하게 모르겠네요. ㅜ 그리고 sx = random.randrange(100,270) sy = random.randrange(250,500) 이렇게 받아둔 변수를 어떻게 활용하는지 강사님께서는 어떻게 사용하는지 궁금합니다.

  • 웹-크롤링
  • selenium
  • cdp
azzi85 댓글 2 좋아요 1 조회수 446

인기 태그

인프런 TOP Writers

주간 인기글