묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
pyautogui 설치시 이번에는 오류 메시지가 바뀌었네요... 그리고 다른 방법들도 다 해봤는데 안되네요
pyautogui 설치시 이번에는 오류 메시지가 바뀌었네요... 그리고 다른 방법들도 다 해봤는데 안되네요 방화벽을 끄는 방법과 직접 다운로드 받아서 설치하는 것까지 다 해봤는데아래에 이미지 처럼 WinError 5 액세스 거부가 되었네요. 이 에러가 윈도우 운영체제 버전과 상관이 있나요? 제가 사용하는 윈도우가 11인데 요즘 윈도우가 버전이 높아지면서 안되는게 제법 많아진 것 같아서요..어떻게 해결해야 될지 정말 막막하네요... 아니면 pyautogui를 빼고 진행을 해야 할지 고민을 해봐야 겠네요.. ㅠㅠ 꼭 좀알려주세요...
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
find로 찾을 때 계속해서 none이 나옵니다.
안녕하세요. 뷰티풀수프 기초 사용법 수강 중에 잘 안되는 부분이 있어서 질문 남깁니다. 네이버 메인 화면 개발자 모드에서 <span class="service_name">메일</span> 라는 태그를 찾아서이 태그를 찾기 위해 span = soup.find(class_="service_name", string="메일") print(span) 이렇게 작성했는데 왜 결과값이 none 이 나오는지 이유를 모르겠습니다 ㅠㅠ 그리고 앞의 강의에서 개발자 모드의 element가 아니라 소스보기에서 보이는 코드에서 태그를 검색해서 찾아내는 것(?)이라고 말씀하셨던 것 같은데 제대로 이해한게 맞나요?소스 보기로 보면 코드가 너무 지저분하게 보이는데 혹시 깔끔하게 볼 수 있는 방법이 있을까요?
-
미해결[웹 개발 풀스택 코스] Node.js 프로젝트 투입 일주일 전 - 기초에서 실무까지
mysql 챕터에 있는 테이블은 도대체 어디에 있는가??
수업자료 라고 링크 걸려 있는 곳에도 없고..테이블을 화면 보고 알아서 만들라는 건가..내가 못 찾는 건가..
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
뉴스기사크롤링중 이런 오류가 나올 경우엔 어떻게 해야 하나요?
잘 따오다가 갑자기 오류가 나더니 그 뒤로 계속 이 오류창이 뜹니다ㅠㅠ isLastPage = soup.select_one("a.btn_next").attrs['aria-disabled'] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^AttributeError: 'NoneType' object has no attribute 'attrs' 코드는 이렇게 작성했어요9월뉴스 결과가 필요한데400페이지까지 밖에 못 긁어온다고 그래서 대충 여러번에 나눠서 작업중입니다ㅠㅠ#네이버기사 크롤링 엑셀저장 import requests from bs4 import BeautifulSoup import time import pyautogui from openpyxl import Workbook #사용자입력 keyword = pyautogui.prompt("검색어를 입력하세요") lastpage = int(pyautogui.prompt("몇 페이지까지 크롤링 할까요?")) #엑셀생성하기 wb = Workbook() #엑셀 시트 생성하기 ws = wb.create_sheet(keyword) #열 너비 조절 ws.column_dimensions['A'].width = 60 ws.column_dimensions['B'].width = 60 ws.column_dimensions['C'].width = 30 #행 번호 row = 1 #페이지 번호 pageNum = 1 for i in range(1, lastpage*10, 10) : print(f"{pageNum}페이지 크롤링중입니다 =================") response = requests.get(f"https://search.naver.com/search.naver?where=news&query=%EC%95%94&sm=tab_opt&sort=1&photo=0&field=0&pd=3&ds=2023.09.01&de=2023.09.07&news&query={keyword}&start={i}") html = response.text soup = BeautifulSoup(html, 'html.parser') articles = soup.select("div.info_group") #뉴스기사 div 10개 추출 for article in articles: links = article.select("a.info") #리스트 if len(links) >= 2: #링크가 2개 이상이면 url = links[1].attrs['href'] #두번째 링크의 href를 추출 response = requests.get(url, headers={'User-agent': 'Mozilla/5.0'}) html = response.text soup_sub = BeautifulSoup(html, 'html.parser') title = None date = None #만약 연예 뉴스라면 if "entertain" in response.url: title = soup_sub.select_one(".end_tit") date = soup_sub.select_one("div.article_info > span > em") #만약 스포츠 뉴스라면 elif "sports" in response.url: title = soup_sub.select_one("h4.title") else: title = soup_sub.select_one(".media_end_head_headline") date = soup_sub.select_one("span.media_end_head_info_datestamp_time._ARTICLE_DATE_TIME") print("=======링크======= \n", url) print("=======제목======= \n", title.text.strip() if title else "제목을 찾을 수 없습니다.") print("=======날짜======= \n", date.text if date else "날짜를 찾을 수 없습니다.") # 'else' 블록에서 'date' 변수 정의는 여기서 끝나도록 수정 ws['A1'] = 'URL' ws['B1'] = '기사제목' ws['C1'] = '업로드날짜' ws[f'A{row}'] = url ws[f'B{row}'] = title.text.strip() if title else "제목을 찾을 수 없습니다." if date: ws[f'C{row}'] = date.text.strip() else: ws[f'C{row}'] = "날짜를 찾을 수 없습니다." row=row+1 #마지막 페이지 여부 확인하기 isLastPage = soup.select_one("a.btn_next").attrs['aria-disabled'] if isLastPage == 'true': print("마지막 페이지 입니다.") break pageNum = pageNum+1 wb.save(r'/Users/eunkyungsong/Desktop/코딩/10월 셀레니움 크롤링/실전/9월뉴스기사크롤링/' + f'{keyword}_result.9월.본문x.9.07.xlsx')
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
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 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_location
-
미해결R로 하는 텍스트마이닝 (Top keyword부터 감성분석까지)
top Keword 추출 강의 질문
Top Keword 추출 강의에서 수업자료에 commnts와 score 파일이 없는데 어디서 받을 수 있을까요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
뉴스기사크롤링시 날짜 범위 지정하는 방법 알려주세요
안녕하세요 선생님파이썬 자체를 처음 깔아봤는데 선생님 덕분에 여기까지 왔습니다...감사드려요ㅠㅠㅠㅠ 뉴스기사들을 엑셀화 하는 거 까지는 따라갔는데기간의 범위를 정하고 싶어요 머리가 안 돌아가네요ex) 3분기 기사만 가져오고 싶다 / 8월달 기사만 가져오고 싶다어느 부분을 어떻게 바꿔주면 되는지 코드 부탁드립니다+네이버 기사 가져올때 400페이지까지 밖에 못 가져오던데 혹시 다른 방법은 없을까요?#네이버기사 크롤링 엑셀저장 import requests from bs4 import BeautifulSoup import time import pyautogui from openpyxl import Workbook #사용자입력 keyword = pyautogui.prompt("검색어를 입력하세요") lastpage = int(pyautogui.prompt("몇 페이지까지 크롤링 할까요?")) #엑셀생성하기 wb = Workbook() #엑셀 시트 생성하기 ws = wb.create_sheet(keyword) #열 너비 조절 ws.column_dimensions['A'].width = 60 ws.column_dimensions['B'].width = 60 ws.column_dimensions['C'].width = 120 ws.column_dimensions['D'].width = 60 #행 번호 row = 1 #페이지 번호 pageNum = 1 for i in range(1, lastpage*10, 10) : print(f"{pageNum}페이지 크롤링중입니다 =================") response = requests.get(f"https://search.naver.com/search.naver?sm=tab_hty.top&where=news&query={keyword}&start={i}") html = response.text soup = BeautifulSoup(html, 'html.parser') articles = soup.select("div.info_group") #뉴스기사 div 10개 추출 for article in articles: links = article.select("a.info") #리스트 if len(links) >= 2: #링크가 2개 이상이면 url = links[1].attrs['href'] #두번째 링크의 href를 추출 response = requests.get(url, headers={'User-agent': 'Mozila/5.0'}) html = response.text soup_sub = BeautifulSoup(html, 'html.parser') #만약 연예 뉴스라면 if "entertain" in response.url: title = soup_sub.select_one(".end_tit") content = soup_sub.select_one("#articeBody") date = soup_sub.select_one("div.article_info > span > em") #만약 스포츠 뉴스라면 elif "sports" in response.url: title = soup_sub.select_one("h4.title") content = soup_sub.select_one("#newsEndContents") #본문 내용안에 불필요한 div, p제거 divs = content.select("div") for div in divs: div.decompose() paragraphs = content.select("p") for p in paragraphs: p.decompose() else: title = soup_sub.select_one(".media_end_head_headline") content = soup_sub.select_one("#newsct_article") date = soup_sub.select_one("span.media_end_head_info_datestamp_time._ARTICLE_DATE_TIME") print("=======링크======= \n", url) print("=======제목======= \n", title.text.strip()) print("=======본문======= \n", content.text.strip()) print("=======날짜======= \n", date) ws['A1'] = 'URL' ws['B1'] = '기사제목' ws['C1'] = '기사본문' ws['D1'] = '업로드날짜' ws[f'A{row}'] = url ws[f'B{row}'] = title.text.strip() ws[f'C{row}'] = content.text.strip() ws[f'D{row}'] = date.text.strip() row=row+1 pageNum = pageNum+1 wb.save(f'{keyword}_result.date.xlsx')
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
pyautogui 설치시 오류가 뜨네요
제가 프롬프트 창에서 pip install pyautogui 를 입력해서실행을 시켰는데 '파일에 바이러스 또는 기타 사용자 동의 없이 실치된 소프트웨어가 있기 때문에 작업이 완료되지 않았습니다'라는 오류메시지가 뜨면서 설치가 안되네요. 왜그런지 알려주세요 오류 이미지도 같이 올릴게요
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
beautiful soup 명령 실행 오류 관련 문의
안녕하세요 파이썬 입문과크롤링 기초 부트캠프 수강 중 beautiful soup 명령 (크롤링) 실행 오류 발생하여 문의드립니다. beautiful soup 명령 실행 시 아래와 같은 오류가 발생하네요. (아나콘다 및 bs 재설치 해도 동일 문제 발생) 개인 노트북으로 학습 할 때는 잘되는데 회사 pc로 하니 이런 오류가 발생하네요..사정상 회사pc로도 학습을 해야하는데 난감하네요 도움 부탁드립니다. [명령문]import requestsfrom bs4 import BeautifulSoupres = requests.get('https://davelee-fun.github.io/blog/crawl_test_css.html')soup = BeautifulSoup(res.content, 'html.parser')[오류내용]SSLCertVerificationError Traceback (most recent call last) File ~\AppData\Local\anaconda3\Lib\site-packages\urllib3\connectionpool.py:714, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw) 713 # Make the request on the httplib connection object. --> 714 httplib_response = self._make_request( 715 conn, 716 method, 717 url, 718 timeout=timeout_obj, 719 body=body, 720 headers=headers, 721 chunked=chunked, 722 ) 724 # If we're going to release the connection in ``finally:``, then 725 # the response doesn't need to know about the connection. Otherwise 726 # it will also try to release it and we'll have a double-release 727 # mess. File ~\AppData\Local\anaconda3\Lib\site-packages\urllib3\connectionpool.py:403, in HTTPConnectionPool._make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw) 402 try: --> 403 self._validate_conn(conn) 404 except (SocketTimeout, BaseSSLError) as e: 405 # Py2 raises this as a BaseSSLError, Py3 raises it as socket timeout. File ~\AppData\Local\anaconda3\Lib\site-packages\urllib3\connectionpool.py:1053, in HTTPSConnectionPool._validate_conn(self, conn) 1052 if not getattr(conn, "sock", None): # AppEngine might not have `.sock` -> 1053 conn.connect() 1055 if not conn.is_verified: File ~\AppData\Local\anaconda3\Lib\site-packages\urllib3\connection.py:419, in HTTPSConnection.connect(self) 417 context.load_default_certs() --> 419 self.sock = ssl_wrap_socket( 420 sock=conn, 421 keyfile=self.key_file, 422 certfile=self.cert_file, 423 key_password=self.key_password, 424 ca_certs=self.ca_certs, 425 ca_cert_dir=self.ca_cert_dir, 426 ca_cert_data=self.ca_cert_data, 427 server_hostname=server_hostname, 428 ssl_context=context, 429 tls_in_tls=tls_in_tls, 430 ) 432 # If we're using all defaults and the connection 433 # is TLSv1 or TLSv1.1 we throw a DeprecationWarning 434 # for the host. File ~\AppData\Local\anaconda3\Lib\site-packages\urllib3\util\ssl_.py:449, in ssl_wrap_socket(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version, ciphers, ssl_context, ca_cert_dir, key_password, ca_cert_data, tls_in_tls) 448 if send_sni: --> 449 ssl_sock = _ssl_wrap_socket_impl( 450 sock, context, tls_in_tls, server_hostname=server_hostname 451 ) 452 else: File ~\AppData\Local\anaconda3\Lib\site-packages\urllib3\util\ssl_.py:493, in _ssl_wrap_socket_impl(sock, ssl_context, tls_in_tls, server_hostname) 492 if server_hostname: --> 493 return ssl_context.wrap_socket(sock, server_hostname=server_hostname) 494 else: File ~\AppData\Local\anaconda3\Lib\ssl.py:517, in SSLContext.wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session) 511 def wrap_socket(self, sock, server_side=False, 512 do_handshake_on_connect=True, 513 suppress_ragged_eofs=True, 514 server_hostname=None, session=None): 515 # SSLSocket class handles server_hostname encoding before it calls 516 # ctx._wrap_socket() --> 517 return self.sslsocket_class._create( 518 sock=sock, 519 server_side=server_side, 520 do_handshake_on_connect=do_handshake_on_connect, 521 suppress_ragged_eofs=suppress_ragged_eofs, 522 server_hostname=server_hostname, 523 context=self, 524 session=session 525 ) File ~\AppData\Local\anaconda3\Lib\ssl.py:1108, in SSLSocket._create(cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session) 1107 raise ValueError("do_handshake_on_connect should not be specified for non-blocking sockets") -> 1108 self.do_handshake() 1109 except (OSError, ValueError): File ~\AppData\Local\anaconda3\Lib\ssl.py:1379, in SSLSocket.do_handshake(self, block) 1378 self.settimeout(None) -> 1379 self._sslobj.do_handshake() 1380 finally: SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006) During handling of the above exception, another exception occurred: MaxRetryError Traceback (most recent call last) File ~\AppData\Local\anaconda3\Lib\site-packages\requests\adapters.py:486, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies) 485 try: --> 486 resp = conn.urlopen( 487 method=request.method, 488 url=url, 489 body=request.body, 490 headers=request.headers, 491 redirect=False, 492 assert_same_host=False, 493 preload_content=False, 494 decode_content=False, 495 retries=self.max_retries, 496 timeout=timeout, 497 chunked=chunked, 498 ) 500 except (ProtocolError, OSError) as err: File ~\AppData\Local\anaconda3\Lib\site-packages\urllib3\connectionpool.py:798, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw) 796 e = ProtocolError("Connection aborted.", e) --> 798 retries = retries.increment( 799 method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2] 800 ) 801 retries.sleep() File ~\AppData\Local\anaconda3\Lib\site-packages\urllib3\util\retry.py:592, in Retry.increment(self, method, url, response, error, _pool, _stacktrace) 591 if new_retry.is_exhausted(): --> 592 raise MaxRetryError(_pool, url, error or ResponseError(cause)) 594 log.debug("Incremented Retry for (url='%s'): %r", url, new_retry) MaxRetryError: HTTPSConnectionPool(host='davelee-fun.github.io', port=443): Max retries exceeded with url: /blog/crawl_test_css.html (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)'))) During handling of the above exception, another exception occurred: SSLError Traceback (most recent call last) Cell In[3], line 4 1 import requests 2 from bs4 import BeautifulSoup ----> 4 res = requests.get('https://davelee-fun.github.io/blog/crawl_test_css.html') 5 soup = BeautifulSoup(res.content, 'html.parser') File ~\AppData\Local\anaconda3\Lib\site-packages\requests\api.py:73, in get(url, params, **kwargs) 62 def get(url, params=None, **kwargs): 63 r"""Sends a GET request. 64 65 :param url: URL for the new :class:`Request` object. (...) 70 :rtype: requests.Response 71 """ ---> 73 return request("get", url, params=params, **kwargs) File ~\AppData\Local\anaconda3\Lib\site-packages\requests\api.py:59, in request(method, url, **kwargs) 55 # By using the 'with' statement we are sure the session is closed, thus we 56 # avoid leaving sockets open which can trigger a ResourceWarning in some 57 # cases, and look like a memory leak in others. 58 with sessions.Session() as session: ---> 59 return session.request(method=method, url=url, **kwargs) File ~\AppData\Local\anaconda3\Lib\site-packages\requests\sessions.py:589, in Session.request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json) 584 send_kwargs = { 585 "timeout": timeout, 586 "allow_redirects": allow_redirects, 587 } 588 send_kwargs.update(settings) --> 589 resp = self.send(prep, **send_kwargs) 591 return resp File ~\AppData\Local\anaconda3\Lib\site-packages\requests\sessions.py:703, in Session.send(self, request, **kwargs) 700 start = preferred_clock() 702 # Send the request --> 703 r = adapter.send(request, **kwargs) 705 # Total elapsed time of the request (approximately) 706 elapsed = preferred_clock() - start File ~\AppData\Local\anaconda3\Lib\site-packages\requests\adapters.py:517, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies) 513 raise ProxyError(e, request=request) 515 if isinstance(e.reason, _SSLError): 516 # This branch is for urllib3 v1.22 and later. --> 517 raise SSLError(e, request=request) 519 raise ConnectionError(e, request=request) 521 except ClosedPoolError as e: SSLError: HTTPSConnectionPool(host='davelee-fun.github.io', port=443): Max retries exceeded with url: /blog/crawl_test_css.html (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)')))
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
네이버 쇼핑 크롤링 문의
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를 제외하고는 강의 내용과 동일한거 같은데 어디에 문제가 있는 걸까요..?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
브라우저가 꺼지는데 어느부분이 문제일까요??
브라우저가 꺼지는데 어느부분이 문제일까요?? from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options #크롬 드라이버 자동 업데이트 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.get("https://www.naver.com")
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
Chapter03에서 Beautifulsoup에서 원하는 결과가 안나오네요
Chapter03에서 Beautifulsoup라이브러리를 실습을 해보는데 결과가 <div class="talk_area" id="topTalkArea"></div>이렇게 div 밖에 안나오는데 뭔가 잘 못된건가요? 물론 id를 사지고 해봤네요..word = soup.select_one('#topTalkArea') 라고 했는데 <div class="talk_area" id="topTalkArea"></div> 이렇게밖에 안나왔네요...
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
1페이지만 가져와집니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 두 코드 모두 1페이지만 불러와집니다ㅠㅠ어디가 잘못된걸까요 1페이지입니다.================== "암 걸리면 서울로"…5년간 100만명 방문 http://www.wowtv.co.kr/NewsCenter/News/Read?articleId=A202310050023&t=NN 두경부암 환자 괴롭히는 ‘구강점막염’ 새 치료법은 http://www.fnnews.com/news/202310040921133037 조기 유방암 환자, 유전자 재발 예측 점수 낮더라도 방심은 금물 http://www.edaily.co.kr/news/newspath.asp?newsid=01715446635770296 ‘이곳’ 사는 여성, 비만 관련 암 위험 낮아 https://health.chosun.com/site/data/html_dir/2023/10/05/2023100502500.html GC셀, 고형암 표적 CAR-NK세포치료제 다국가 1상 진행 http://www.medisobizanews.com/news/articleView.html?idxno=110729 인천 학교 급식실 노동자 폐암 발병 지속…"지원책은 미비" https://www.yna.co.kr/view/AKR20231005074500065?input=1195m 제주 암 환자 3만여 명, 5년간 '서울 원정 치료' http://www.jibs.co.kr/news/articles/articlesDetail/34499?feed=na 암 백신 청신호까지 켰다… 커리코 ‘30년 집념’ https://www.seoul.co.kr/news/newsView.php?id=20231004006003&wlog_tag3=naver 젠큐릭스, 갑상선암 동반진단 UAE 승인 …폐암 이어 두 번째 https://www.hankyung.com/article/202310057966i [약손+] 폐암의 진단과 치료 ⑩폐암의 유전과 가족력 https://dgmbc.com/article/fwzGgK5QFfpv 2페이지입니다.================== "암 걸리면 서울로"…5년간 100만명 방문 http://www.wowtv.co.kr/NewsCenter/News/Read?articleId=A202310050023&t=NN 두경부암 환자 괴롭히는 ‘구강점막염’ 새 치료법은 http://www.fnnews.com/news/202310040921133037 조기 유방암 환자, 유전자 재발 예측 점수 낮더라도 방심은 금물 http://www.edaily.co.kr/news/newspath.asp?newsid=01715446635770296 ‘이곳’ 사는 여성, 비만 관련 암 위험 낮아 https://health.chosun.com/site/data/html_dir/2023/10/05/2023100502500.html GC셀, 고형암 표적 CAR-NK세포치료제 다국가 1상 진행 http://www.medisobizanews.com/news/articleView.html?idxno=110729 인천 학교 급식실 노동자 폐암 발병 지속…"지원책은 미비" https://www.yna.co.kr/view/AKR20231005074500065?input=1195m 제주 암 환자 3만여 명, 5년간 '서울 원정 치료' http://www.jibs.co.kr/news/articles/articlesDetail/34499?feed=na 암 백신 청신호까지 켰다… 커리코 ‘30년 집념’ https://www.seoul.co.kr/news/newsView.php?id=20231004006003&wlog_tag3=naver 젠큐릭스, 갑상선암 동반진단 UAE 승인 …폐암 이어 두 번째 https://www.hankyung.com/article/202310057966i [약손+] 폐암의 진단과 치료 ⑩폐암의 유전과 가족력 https://dgmbc.com/article/fwzGgK5QFfpv 3페이지입니다.================== "암 걸리면 서울로"…5년간 100만명 방문 http://www.wowtv.co.kr/NewsCenter/News/Read?articleId=A202310050023&t=NN 두경부암 환자 괴롭히는 ‘구강점막염’ 새 치료법은 http://www.fnnews.com/news/202310040921133037 조기 유방암 환자, 유전자 재발 예측 점수 낮더라도 방심은 금물 http://www.edaily.co.kr/news/newspath.asp?newsid=01715446635770296 ‘이곳’ 사는 여성, 비만 관련 암 위험 낮아 https://health.chosun.com/site/data/html_dir/2023/10/05/2023100502500.html GC셀, 고형암 표적 CAR-NK세포치료제 다국가 1상 진행 http://www.medisobizanews.com/news/articleView.html?idxno=110729 인천 학교 급식실 노동자 폐암 발병 지속…"지원책은 미비" https://www.yna.co.kr/view/AKR20231005074500065?input=1195m 제주 암 환자 3만여 명, 5년간 '서울 원정 치료' http://www.jibs.co.kr/news/articles/articlesDetail/34499?feed=na 암 백신 청신호까지 켰다… 커리코 ‘30년 집념’ https://www.seoul.co.kr/news/newsView.php?id=20231004006003&wlog_tag3=naver 젠큐릭스, 갑상선암 동반진단 UAE 승인 …폐암 이어 두 번째 https://www.hankyung.com/article/202310057966i [약손+] 폐암의 진단과 치료 ⑩폐암의 유전과 가족력 https://dgmbc.com/article/fwzGgK5QFfpv import requests from bs4 import BeautifulSoup import pyautogui keyword = pyautogui.prompt("검색어를 입력하세요>>>") pageNum = 1 for i in range(1,30,10):#페이지넘기기 print(f"{pageNum}페이지입니다.==================")#페이지안내 response = requests.get(f"https://search.naver.com/search.naver?where=news&sm=tab_jum&query={keyword}&start{i}") #start숫자가페이지 html = response.text soup = BeautifulSoup(html, 'html.parser') links = soup.select(".news_tit") #결과는 리스트로 for link in links: title = link.text #태그 안에 텍스트요소를 가져온다 url = link.attrs['href'] #href의 속성값을 가져온다 print(title, url) pageNum = pageNum+1import requests from bs4 import BeautifulSoup import pyautogui keyword = pyautogui.prompt("검색어를 입력하세요>>>") lastpage = pyautogui.prompt("마지막 페이지번호를 입력해 주세요") pageNum = 1 for i in range(1,int(lastpage)*10,10): print(f"{pageNum}페이지입니다.==================") response = requests.get(f"https://search.naver.com/search.naver?where=news&sm=tab_jum&query={keyword}&start{i}") html = response.text soup = BeautifulSoup(html, 'html.parser') links = soup.select(".news_tit") #결과는 리스트로 for link in links: title = link.text #태그 안에 텍스트요소를 가져온다 url = link.attrs['href'] #href의 속성값을 가져온다 print(title, url) pageNum = pageNum + 1
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
5.Bot Detection 피하기(고급편) 질문입니다.
options = uc.ChromeOptions()가져와서 아래쪽에 uc.Chrome() 실행할때 options가 안넣어져 있는데 안넣고 실행하는건가요???깃허브에 설명에는driver = uc.Chrome(options=options) 이렇게 되어 있어 보이는데요?
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
selenium으로 연 크롬창 안꺼짐
셀레니움 버전도 3.14?였나 최신걸로 업데이트 하고 써서웹드라이버 설치하는 것도 안해도 되는 상태인데요.강의에서는 driver.get(url) 하면 창이 켜졌다 자동으로 꺼지던데제꺼는 창이 자동으로 안꺼집니다... 뭔가 업데이트로 변경된 부분인가요? 창 안꺼지도록 하는 방법 강의 들으려는데제꺼는 원래 안꺼져서 당황스럽네요
-
미해결초간단 초스피드 데이터 수집 (파이썬 크롤링)
안녕하세요 파이썬 관련 문의드립니다
안녕하세요 파이썬 공부하다가 도저히 모르겠어서 문의 드립니다.다름이 아니라 api 쪽은 공부해본적이 없어서 기본적인 걸 모르는것같은데http://ipss1.interpark.com/openapi/product/ProductAPIService.do?_method=UpdateProductAPIStatTpQty&citeKey={citeKey}&secretKey={secretKey}&dataUrl=https://shop.interpark.com/api/new.ver2/sample/sample9.xml사이트에서는 이방식으로 api 요청하라고 하는데코드는 챗gpt랑 하면서 짜봤는데import requests# API 엔드포인트 및 인증 정보 설정citeKey = "citeKey"secretKey = "secretKey"url = f"http://ipss1.interpark.com/openapi/product/ProductAPIService.do?_method=UpdateProductAPIStatTpQty&citeKey={citeKey}&secretKey={secretKey}"# 요청 데이터 설정 (상품 정보 업데이트)payload = { "prdNo": "12344452", # 인터파크 상품번호 (as a string) "saleStatTp": "03", # 판매중:01, 품절:02, 판매중지:03, 일시품절:05, 상품삭제:98}# API 요청 보내기response = requests.post(url, data=payload)# 응답 확인if response.status_code == 200: print(response.text)else: print("상품 정보 업데이트에 실패했습니다.") print("응답 코드:", response.status_code) print("응답 내용:", response.text)제가 짠 코드에선 url 맨뒤에 예시처럼&dataUrl=https://shop.interpark.com/api/new.ver2/sample/sample9.xml이부분이 빠진것같은데patload 부분을 예시처럼 url을 만들어서 저렇게 하는방식이 가능한가요?
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
string vs text
text가 하위 태그에 있는 문자열까지 가져온다는 것은 알겠습니다. 근데 string도 명확한 설명 부탁드립니다..강의에서 <a class="logo_naver"> <span class="blind">네 이버</span></a>이걸로 예를 들었는데.. 공백도 문자열이잖아요. 강의에서도 그렇게 말씀하셨고.그러면 위 html코드에 string을 불러오면 a태그 뒤의 공백 한칸을 가져와서 " " 이런 공백 한칸으로 이루어진 문자열이 나와야 할 것 같은데 None으로 나오죠..문자열인데 왜 None으로 나오는지 잘 모르겠습니다.엔터가 들어가도 None으로 나오는 것 같은데... text는 알겠는데 string은 설명이 좀 부족한것 같아서 보충 설명 부탁드립니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
불필요한 div, p 코드 삽입 후 에러
안녕하세요. 샘불필요한 div, p 코드 사입 후 에러 발생 건 입니다. import requests from bs4 import BeautifulSoup import time req_header_dict = { # 요청헤더 : 브라우저 정보 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36' } response = requests.get("https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EC%86%90%ED%9D%A5%EB%AF%BC", headers= req_header_dict) html = response.text soup = BeautifulSoup(html, "html.parser") articles = soup.select("div.info_group") # 뉴스기사 div 10개 가져오기 for article in articles: links = article.select("a.info") # 결과는 리스트 if len(links) >= 2: url = links[1].attrs["href"] response = requests.get(url, headers= req_header_dict) html = response.text soup = BeautifulSoup(html, "html.parser") # 만약 뉴스라면 if "entertain" in response.url: title = soup.select_one(".end_tit") content = soup.select_one("#articeBody") # 스포츠 뉴스라면 elif "sports" in response.url: title = soup.select_one("h4.title") content =soup.select_one("#newsEndContents") # 본문 내용안에 불필요한 dvi 삭제 divs = content.select("div") for div in divs: div.decompose() paragraphs = content.select("p") for p in paragraphs: p.decompose() else: title = soup.select_one(".tit.title_area") content = soup.select_one("#newsct_article") print("##########링크##########",url) print("##########제목##########",title.text.strip()) print("##########본문##########",content.text.strip()) time.sleep(0.3)
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
html 출력문제
강의 내용 외 개인적인 실습 사이트의 질문은 답변이 제공되지 않습니다.문제가 생긴 코드, 에러 메세지 등을 꼭 같이 올려주셔야 빠른 답변이 가능합니다.코드를 이미지로 올려주시면 실행이 불가능하기 때문에 답변이 어렵습니다.답변은 바로 제공되지 않을 수 있습니다.실력 향상을 위해서는 직접 고민하고 검색해가며 해결하는 게 가장 좋습니다. import requestsfrom 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 win32Python 3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:38:34) [MSC v.1936 64 bit (AMD64)] on win32Type "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에서 설치했는데 제대로 안깔려서 안되는건가요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
네이버 자동로그인
안녕하세요 네이버 자동로그인을 실행하면로그인 창이 떠요.from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By # 크롬 드라이버 자동 업데이트 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,options=chrome_options) # 웹페이지 해당 주소 이동 driver.implicitly_wait(5) driver.maximize_window() driver.get('https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/') # 아이디 입력 창 driver.find_element(By.CSS_SELECTOR,'#id') id.click() id.send_keys('sand12') # 비밃번호 입력 창 pw = driver.find_element(By.CSS_SELECTOR,'#pw') pw.click() pw.send_keys('yiiit!@') # 로그인 버튼 login_btn = driver.find_element(By.CSS_SELECTOR,'#log\.login') login_btn.click()