[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
직접 작성해보며 익숙해지기: 크롤링 기본 연습문제 풀기 (업데이트) 예제 사이트 크롤링연습 4/5번문제 질문입니다. select_one을 사용하지 않고, import requests from bs4 import BeautifulSoup url = ' https://davelee-fun.github.io/ ' res = requests.get(url) soup = BeautifulSoup(res.content, 'html.parser') box = soup.select ('section.recent-posts') items = box[0].select('h4.card-text') for item in items: print(item.get_text().strip()) 이런 식으로 select를 사용해서 분리하면 안되는건가요? 원소가 하나인 리스트가 되는걸로 이해해서 [0]을 사용하고 그 후에 h4.card=text를 사용하면 출력은 똑같이 되는데, 차후 크롤링 할때 이렇게 이해하면 문제가 있을까요?
sequelize-cli 까지 설치가 된거 같긴 한데... sequelize init 을 누르면 그림과 같이 오류가 떠요~ mac 에서 nvm 도 설치하고, 이것저것 계속 했는데도 잘 안됩니다. 아래 작업도 했는데도, 안돼서 진도를 3시간째 못나가고 있네요. 도움 주시면 감사하겠습니다. ㅠㅠ 정말 열심히 듣고 있는데.. ㅠ
안녕하세요 선생님! 수업 감사합니다:) 6강에서 웹크롤링 코드 설명해주신 부분 관련입니다. 제 연습용 콜랩 노트에서 선생님께서 공유해 주신 코드를 위에서부터 차곡차곡 붙여넣으며 실행해보던 중이었는데요. 셀레니움 module import 부분에서부터 정상적으로 실행이 되지 않는 것 같습니다... 하단 오류 메시지를 어떻게 해석해야 할지 몰라, 해결방법 문의드립니다. 입력한 코드 ################################################################################################################################################################ # 2023.07.09 셀레니움 버전업으로 인한 코드 변경 ################################################################################################################################################################ from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By import time from time import sleep from bs4 import BeautifulSoup import requests import re import os # Dataframe import pandas as pd df = pd.DataFrame(columns=['idx','star','review']) service = Service(executable_path="chromedriver") options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--no-sandbox') driver = webdriver.Chrome(service=service, options=options) 실행 시 결과 메시지 --------------------------------------------------------------------------- WebDriverException Traceback (most recent call last) <ipython-input-21-e1d24ca4db7f> in <cell line: 48>() 46 options.add_argument('--headless') 47 options.add_argument('--no-sandbox') ---> 48 driver = webdriver.Chrome(service=service, options=options) 3 frames /usr/local/lib/python3.10/dist-packages/selenium/webdriver/common/service.py in assert_process_still_running(self) 108 return_code = self.process.poll() 109 if return_code: --> 110 raise WebDriverException(f"Service {self._path} unexpectedly exited. Status code was: {return_code}") 111 112 def is_connectable(self) -> bool: WebDriverException: Message: Service /usr/bin/chromedriver unexpectedly exited. Status code was: 1
안녕하세요. 강사님 아래 코드에서 '블랙핑크' 를 검색할 때 Traceback (most recent call last): File "c:\pratice_crolling\심화1_\03_스포츠 뉴스 크롤링.py ", line 52, in <module> print(article_title.text.strip()) ^^^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'text' 다음과 같은 오류가 뜹니다 ㅠㅠ CSS 선택자, 오타도 모두 맞게 확인이 되는데 왜 저 검색어만 오류가 뜰까요ㅠㅠ? # -*- coding: euc-kr -*- # 네이버에서 손흥민, 오승환과 같은 스포츠 관련 검색어 크롤링하기 import requests from bs4 import BeautifulSoup import pyautogui import time search = pyautogui.prompt("어떤 것을 검색하시겠어요?") response = requests.get(f"https://search.naver.com/search.naver?sm=tab_hty.top&where=news&query={search}&oquery=%EC%98%B7%EC%9C%BC%ED%99%98&tqi=i74G%2FdprvTossZPeMhCssssssko-058644") html = response.text soup = BeautifulSoup(html, "html.parser") articles = soup.select(".info_group") for article in articles: # '네이버뉴스' 가 있는 기사만 추출한다. (<a> 하이퍼링크가 2개 이상인 경우에 해당) links = article.select("a.info") if len(links) >=2 : url = links[1].attrs['href'] response = requests.get(url, headers={'User-agent':'Mozila/5.0'}) html = response.text soup = BeautifulSoup(html, "html.parser") # 스포츠 기사인 경우 if "sports" in url: article_title = soup.select_one("h4.title") article_body = soup.select_one("#newsEndContents") # 본문 내에 불필요한 내용 제거 p태그와 div태그의 내용은 출력할 필요가 없다. 없애주자. p_tags = article_body.select("p") # 본문에서 p 태그인 것들을 추출 for p_tag in p_tags: p_tag.decompose() div_tags = article_body.select("div") # 본문에서 div 태그인 것들을 추출 for div_tag in div_tags: div_tag.decompose() # 연예 기사인 경우 elif "entertain" in url: article_title = soup.select_one(".end_tit") article_body = soup.select_one("#articeBody") # 일반 뉴스 기사인 경우 else: article_title = soup.select_one("#title_area") article_body = soup.select_one("#dic_area") # 출력문 print("==================================================== 주소 ===========================================================") print(url.strip()) print("==================================================== 제목 ===========================================================") print(article_title.text.strip()) print("==================================================== 본문 ===========================================================") print(article_body.text.strip()) #strip 함수는 앞 뒤의 공백을 제거한다. time.sleep(0.3)
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
import requests from bs4 import BeautifulSoup res = requests.get(' https://v.daum.net/v/20170615203441266 ') soup = BeautifulSoup(res.content,'html.parser') data = soup.find('div', 'layer body') data.get_text() 을 작성했는데, 'NoneType' object has no attribute 'get_text' 오류가 뜨더라고요. 28강에 적힌 스크래핑 코드와 좀 달라서 형식은 같게 넣었는데 오류라, 무엇이 문제인지 알 수 있을까요?
안녕하세요, 스타트코딩 선생님! CSS 선택자 부분 중 광고 상품정보 : adProduct_info_area__dTSZf 일반 상품정보 : product_info_area__xxCTi 이렇게 name 으로 지정할 CSS 선택자가 다르지만, price 로 지정할 CSS 선택자는 price_num__S2p_v 로 두개 모두 동일 합니다. 따라서 코드를 작성할 때 상품정보의 수가 일치하지 않는 오류 가 생기는 이럴땐 어떻게 해결해야 하는지 알려주세요. 상품정보의 수가 일치하지 않는 부분 광고 상품정보 : adProduct_info_area__dTSZf (모두 8개) 일반 상품정보 : product_info_area__xxCTi (모두 40개) 가격정보 : price_num__S2p_v (모두 48개) 답변 부탁드립니다. 감사합니다.
안녕하세요, 지금 Puppeteer로 크롤링을 하고있는데 예를들어서 1 ~ 10까지 작업이 각각 있다고했을때 이 10가지의 크롤링 작업을 완료하는데 너무 오래걸려서 Multi Processing 혹은 Multi Thread 방식을 생각하고 있습니다. 둘중에 어떠한게 좋을까요? Puppeteer 1개(node process 1개)로 1~10까지 돌렸을때 너무 오래걸려서 이걸 각각의 작업당 프로세스 1개를 붙힐것인지, 아니면 Process는 하나인데 Worker Thread를 여러개 만들어서 Main 스레드는 1번 작업, 나머지 9개 Worker Thread 생성해서 각각 작업에 한개씩 붙혀서 작업하게끔 하는게 좋을지 고민하고 있는데 혹시 어떠한 방법이 좋을까요 ? 혹시 설명이 부족할까봐 좀 구체적으로 예시를 남기면, <기존방식> 작업들: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 이름이 main.js인 1개 자바스크립트 파일을 node main.js로 실행 및 이걸로 그냥 1~10까지 작업들을 모두 동기적으로 처리 >> 너무 시간이 오래걸림 <원하는 방식 및 고민하고 있는 2가지 방식> 작업들: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 이름이 main.js인 1개 자바스크립트 파일이 있고 process.argv로 인자를 줘서 아래와 같이 node process를 10개를 생성하여 각각 작업들을 1개의 프로세스들이 실행 node main.js 1 node main.js 2 node main.js 3 ... node main.js 10 이름이 main.js인 1개 자바스크립트 파일이 있고 거기에서 Worker Thread 9개를 만들어서 Main Thread는 1번작업에 붙히고, 만든 9개 Worker Thread를 각각 2,3,4 ~ 10까지의 작업에 각각 한개씩 붙혀서 작업 감사합니다
현재 일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석 이라는 수업을 듣고 있습니다. 최근에 ChatGPT 실무에 100% 활용하기 라는 수업이 생겨서 수강 여부를 고민중에 있습니다. 챕터만 보게되면 중복되는 부분이 꽤 있는 것 같은데, 중복으로 들을 필요가 있을지? 어떤 점이 다른지 궁긍하여 문의드립니다.
안녕하세요 강사님 같은 강의에 여러 번 질문 드려 죄송합니다. 실무에 적용하려고 복습을 하다가 안되는 부분이 있어 또 질문 드리게 되었습니다. element = driver.find_element(By.XPATH, shoppingmall_review) 위 코드에서 오류가 뜹니다..또 셀레니움이 업데이트 된 걸까요? 업데이트 된 코드는 어디서 확인하나요? 위 사진 첨부드립니다. 추가로 마지막 코드도 실행이 안됩니다.