안녕하세요. 강사님 아래 코드에서 '블랙핑크' 를 검색할 때 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)
강의 잘 들었습니다! 마지막 강의 실행 부분에서 문제가 생겼는데요 작성하신 코드와 똑같이 진행했음에도 실행 시 "Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed" 라는 에러가 나버립니다. 제 생각엔 만들어둔 Job이 7개라 어떤 Job을 실행시켜야할 지 정하지 못해 나는| 에러처럼 보입니다. 예상컨데 helloWorldJob이 HelloWorldJobConfig 클래스에서 만든 잡의 이름이라고 보는데, 저도 똑같이 했는데 왜 이런 에러가 날까요? @Qualifier("helloWorldJob") private final Job helloWorldJob; 를 사용해봐도 여전히 에러가 납니다.
안녕하세요, 강의를 잘 듣고 있습니다. 모델 필드에 있는 몇몇 필드들이 admin에 나타나지 않더군요 예를 들면, updated_at, created_at 같은 필드들이요 이를 위해서 admin 페이지에 일일히 모델 필드를 list_display에 등록해줘야 하는게 맞나요? from django.contrib import admin # Register your models here. from .models import * admin.site .empty_value_display = "-empty-" admin.site .register(Product) admin.site .register(CartProduct) class OrderAdmin(admin.ModelAdmin): list_display = ['customer', 'transaction_id', 'total_price'] admin.site .register(Category) admin.site .register(UserProfile) admin.site .register(Order) admin.site .register(OrderedProduct) admin.site .register(ShipmentInfo) 그럼 제가 직접만든 모델의 경우에는 그렇다 쳐도.. allauth에 있는 site domain 부분이 나오질 않는거에요 ㅠㅠ... 제가 뭘 잘못 건드렸는 지 모르겠는데, 맨처음 프로젝트할 때에는 allauth의 소셜 어플리케이션 부분에 사이트 도메인을 입력할 수 있는 커다란 박스가 있었는데, 그것만 또 안난옵니다. 제가 뭘 잘못한건지 ㅠㅠ 원래 잘 나오던건데... 이번에 파이참 커뮤니티 에디션에서 유료버전으로 바꾸고, 프로젝트를 만들고 나니 admin에 몇몇 모델의 필드들이 잘 보이지 않습니다. verbose name을 설정된것들이 특히 그런 거 같은데 무엇이 문제인지 도통 모르겠습니다. 그렇다고 allauth를 제가 admin에 등록해야하는걸까요? 2.제가 모르는 무언가가 있는걸까요?
안녕하세요. 아래 섹션 실습 중, 에러가 발생하여 문의드립니다. 섹션 9 : [응용] 윈도우 관리학 - (1)베이그런트를 이용해서 윈도우를 추가하기 Ansible_env_ready.yaml 에 아래와 같이 추가 후, vagrant provision ansible-server을 수행했는데 pvwinrm 설치 과정에서 에러가 발생하였습니다. - name: Install python-pip yum: name: python-pip state: present - name: Install pywinrm pip: name: pywinrm state: present ansible-server에 접속하여 수동으로 pip install pywinrm을 수행했는데 역시 에러가 발생합니다. python 버전을 업그레이드 하라고 메시지가 나오는데 향후 수업 따라하기 시, 영향이 있을 듯 하여 선뜻 테스트하지 못 하고 있습니다. 해결 방법에 대해서 가이드 부탁드리겠습니다. 감사합니다 !
Spring Batch Plugin 설치 이유가 궁금합니다. 설치하지 않았을 경우 이 부분에서 빨간 줄이 나타나며 Bean을 찾을 수 없다는 에러를 나타냅니다. 플러그인을 통해서 빈을 생성하게 된다면 jar로 압축하여 실행하더라도 빈이 생성되지 않아야 되는게 맞다고 생각하지만, 그렇지는 않은걸로 알고 있습니다. 또한 jar로 실행하게 되면 잘 실행이 될텐데 그럼 인텔리제이에서도 플러그인 없이 에러가 뜨면 안되지 않나 라는 생각이 들어 질문하게 되었습니다.
안녕하세요! 강의와는 조금 다르게 java11과 springboot 2.7.13(snapshot)으로 진행해봤는데요. 빌드가 계속 실패합니다 ㅠ https://github.com/chojuyeon94/SpringBatchTutorial org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'batchDataSourceInitializer' defined in class path resource [org/springframework/boot/autoconfigure/batch/BatchAutoConfiguration$DataSourceInitializerConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.batch.BatchDataSourceScriptDatabaseInitializer]: Factory method 'batchDataSourceInitializer' threw exception; nested exception is java.lang.IllegalStateException: Unable to detect database type 데이터베이스 타입을 찾을 수 없다고 나오는데요 이게 데이터베이스에 연결이 잘 안되는거라고 해서 여러 방법을 써봤는데 잘 안되서 글 남깁니다!!
sqliteBrowser 사용하는 수업에서 db.sqlite3를 열려고 하니, database is locked 라는 메시지가 뜹니다. 그래서 ChatGPT나 Bard... Googling을 이용해봤지만, 저에게 해당될만한 내용이 없네요. 혹시 몰라 재부팅도 해봤습니다. 이거 DB부분만 지웠다가 다시 까는 방법이 있을까요? (makemigrations, migrate 부분)
안녕하세요 선생님 현재 모델링 및 평가(회귀)부분을 학습하고 있습니다. 코드를 따라가면서 실습을 진행하고 있는데, rmse 값이 선생님과 달라 질문 드립니다. 제가 알기로는 모델링을 하는 과정에서 예측한 값이 달라질 수 있고, 이에 따라 평가지표인 rmse 값이 다를 수 있다...라고 알고 있습니다. 그런데 값의 차이 뿐만이 아니라 baseline과 scaler 적용 결과가 좋은지 나쁜지가 달라 질문드립니다. 예를 들어, 선생님께서 하셨을때는 RandomForestRegressor의 baseline이 rmse값이 가장 좋았고(작았고), scaler를 적용했을 때 rmse가 커져서 scaler 적용은 하지 않는게 좋다~라는 내용의 실습이었는데 제가 했을 때는 baseline의 rmse보다 scaler를 적용했을 때의 rmse가 작아 scaler를 적용하는 것이 좋다..는 결론이 나옵니다. 질문을 정리하자면, 모델링을 하는 과정에서 선생님과 제가 실습한 예측값과 rmse가 다른게 맞는지 다른게 맞다 해도 scaler 적용여부 등을 바꿀 수 있을 정도로 예측값과 rmse가 달라질 수 있는지 (추가질문)달라지더라도 선생님 실습값 : 4728.xx 제 실습값 6025.174022213681 이정도로 달라질 수 있는지... (추가질문) 모델링 및 평가(회귀) 24:56에서 수험자는 알 수 없는 영역>y_test로 rmse로 구하시고 결과값이 17909.xx로 나왔는데 여기에서도 charges에 로그변환 한 이후기 떄문에 원래는 np.exp(pred)로 rmse를 구했어야 하는지 일 것 같습니다. 감사합니다.
안녕하세요. 7:32초 쯤에부터 말씀을 해주신 내용에 질문이 있습니다. 다음 강의인 JobParameter의 내용까지 모두 수강하고 해당 질문을 드리게 되었는데요. "이전과 동일한 Job, 그 다음에 똑같은 JobParameter의 값으로 실행이 되면 이미 존재하는 JobInstance를 리턴하고, 결국엔 수행이 실패합니다" "똑같은 Job과 똑같은 JobParameter의 내용으로 다시 수행할 필요가 없는거죠. 그럼 내용까지 똑같아 지니까" 위와 같이 말씀을 해주셨는데 해당 말씀을 듣고, 똑같은 Parameter의 "값"을 가진다고 해도 Job이 수행이 되어야하는게 아닌가? 왜 실패처리를 하게 Spring Batch에서 구현을 해놓은거지?라는 의문이 들었습니다. 그리고 이러한 의문을 가졌을때는 JobParameter에 대한 실습을 진행하지 않았던 상태여서 JobParameter를 넘기지 않는것을 토대로 Job을 실행시켜보았는데 강사님의 말씀대로 최초 한번만 실행되고 그 이후로는 Job이 실행되지 않고 Database에 이미 완료되었다는 Error Message와 함께 데이터가 쌓이더군요. 그래서 아 정말 그렇구나 JobParameter가 같으면("JobParameter가 없다"라는게 같음, 동일한 Job + Empty JobParameter) 실패처리를 하는구나라고 생각을 하고 강의 수강을 이어갔습니다. 그리고 다음 강의에서 JobParameter에 총 4개의 Parameter를 가지고 Job을 실행하시는 것을 보여주셨습니다. name=user1 seq=2 date=2021/01/01 age=16.5 JobInstance 강의에서 배운 내용을 가진채로, 저는 해당 Parameter의 값으로 여러번 실행하면 에러가 날줄 알았는데 예상과는 다르게 저의 처음 예상(똑같은 Parameter의 "값"을 가진다고 해도 수행이 되어야하는게 아닌가?)대로 정상적으로 모두 실행이 되었습니다. 또한 JobParameter 강의에서 강사님께서도 같은 Parameter를 가지고 여러번 수행했을때(jar, InteliJ Configuration으로 실행 방법은 달랐지만 넘기는 Parameter는 같은) 정상적으로 해당 Job이 성공을 하는 Flow가 강의에 담겨있었습니다. 배운것과 조금 다른것 같아서 아래 코드를 다시 살펴보았고, 동일한 Job + JobParameter의 "값"의 동일함이 아닌, 동일한 Job + JobParameter "객체"의 동일 여부를 가지고 JobInstance의 생성 및 실행을 구분하는것이 아닌가라는 결론을 내게 되었습니다. @Override public void run(ApplicationArguments args) throws Exception { JobParameters jobParameters = new JobParametersBuilder() .addString("name", "user1") .addLong("seq", 2L) .addDate("date", new Date()) .addDouble("age", 16.5) .toJobParameters(); jobLauncher.run(job, jobParameters); 위의 제 결론에 확신을 더 얻고자, 말도 안되는 코드인것 같지만 아래와 같이 수행을 해봤을때 IllegalStateException: Failed to execute ApplicationRunner 에러가 발생하였습니다. 아래 코드의 의도는 동일한 jobParameters라는 객체를 가지고 같은 Job을 실행시켰을때 오류가 날것이다라는 가정이였고, 오류가 났으니 제 가정이 맞는것 같습니다. @Override public void run(ApplicationArguments args) throws Exception { JobParameters jobParameters = new JobParametersBuilder() .addString("name", "user1") .addLong("seq", 2L) .addDate("date", new Date()) .addDouble("age", 16.5) .toJobParameters(); jobLauncher.run(job, jobParameters); // 같은 jobParameters 객체를 가지고 한번 더 실행 jobLauncher.run(job, jobParameters); 정리하자면, 동일한 Job + JobParameter의 "값"의 동일함이 아닌, 동일한 Job + JobParameter "객체"의 동일 여부를 가지고 JobInstance의 생성 및 실행을 구분하는것이 맞는것 같다인데, 혹시 제 생각이 맞을까요? 실제로 BATCH_JOB_EXECUTION_PARAMS 테이블에서 Parameter값들은 계속 같은게 들어오지만 BATCH_JOB_INSTANCE 테이블의 JOB_KEY값은 계속 다르게 저장이되네요.
H2 데이터베이스 설정과, 배치 실행을 위한 Schema와 Table을 생성하는 설정은 생략하고 이번 수업을 진행하신걸까요? H2에 대한 의존성을 설치하기위해 pom.xml에 작성하신것을 언급해주시긴 했지만, 그 후에 application.yml 혹은 application.properties에 아래의 기본적인 설정이 필요합니다. spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=saspring.datasource.password= 사실 이것은 너무 기본적인것이기 때문에 생략을 해도 크게 문제가 되지 않을것 같다는 생각이 듭니다. 하지만, Spring Batch를 처음 접해보는 수강생으로서 아래의 설정은 언급을 한번 해주셨다면 좋지 않았을까 아쉬움이 듭니다. spring.batch.jdbc.initialize-schema=always 해당 설정은 바로 다음 수업에서 다뤄주시던데, 혹시 이번 수업은 그냥 그럼 눈으로만 보고 넘어가는 수업으로 의도하신걸까요? 버전이 다르거나 다른 변수들이 너무 많기때문에 수강하는 사람도 수업내용을 그대로 해보고 안된다고 바로 질문을 하기보다는 어느정도의 Googling을 통해서 해결할 수 있는 문제는 스스로 해결해야한다고 생각합니다. 그러는 과정속에서 성장도 할 수 있으니 이 과정은 필요하다고 생각합니다. 하지만, 해당 수업은 수업에 전적으로 의존하는것과 수강생이 직접 Googling을 하는것의 그 중간점을 설정하기가 참 어려운것 같습니다. 위의 배치 관련된 설정은 알고나니 너무 그 방법이 쉽고, 기본적인것이지만 저것을 몰랐던 상황에서는 오류가 왜 나는지에 대해서 많이 혼란스러웠던것 같습니다. 해당 강의의 Github의 코드도 참고하기 위해 Part2.1과 2.2로 브랜치를 Checkout해서 확인해 보았는데도, 설정관련된 코드는 어디에도 없었습니다. 강사님이 생각하시는 "수강생이 직접 해봐야하는것"의 기준은 어느정도로 생각하고 계신건가요??