[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
# 저는 다음과 같이 구문을 작성했습니다. 상품의 각 그룹이 아니라, 쥐마켓의 베스트 상품 코너를 클릭하면 나오는 첫 페이지(ALL 항목)의 상품들을 크롤링 하려고 했습니다. 해당 페이지의 주소는 'http://corners.gmarket.co.kr/Bestsellers' 였고, 그래서 해당 주소를 입력했습니다. 가격도 받아보고 싶어서 해당 구문을 삽입했고요. 하지만 get_text()에러가 다시 발생했고, 강의 처럼 쥐마켓의 베스트 상품 코너 중 아무 상품 그룹을 클릭해서 크롤링하면 정상적으로 출력이 됨을 확인했습니다. 아래 코드 처럼 작성하면 왜 get_text()에러가 발생하는지(첫 번째 상품은 출력이 되지만 두 번째 상품부터 에러가 발생합니다.), 그리고 어떻게 해결해야 하는지 궁금합니다. 감사합니다! import requests from bs4 import BeautifulSoup res = requests.get('http://corners.gmarket.co.kr/Bestsellers') soup = BeautifulSoup(res.content, 'html.parser') titles = soup.select('div.best-list li a.itemname') for title in titles: if len(title.get_text()) > 0: # print(title.get_text(), title['href']) res_sub = requests.get(title['href']) soup_sub = BeautifulSoup(res_sub.content, 'html.parser') price_real = soup_sub.select_one('#itemcase_basic > p > span > strong') contact_name = soup_sub.select_one('#vip-tab_detail > div.vip-detailarea_productinfo > table:nth-child(3) > tbody > tr:nth-child(4) > td') contact_num = soup_sub.select_one('#vip-tab_detail > div.vip-detailarea_productinfo > table:nth-child(3) > tbody > tr:nth-child(9) > td') print(title.get_text(), title['href'], price_real.get_text(), contact_name.get_text(), contact_num.get_text())
안녕하세요. 강의 잘 듣고 있는 완전초보 학습자입니다. 아무래도 초보이다 보니 보면서 따라한다고 따라하는데 코드에서 오류가 조금씩 생깁니다. 틀린 코드를 찾으려고 강의를 처음부터 다시 보기도 하는데 좀 힘드네요. 예제의 경우(소코반, 어메이징 볼링) 코드만 따로 자료로 올려주시면 좋겠습니다.
H2 스코프만 테스트로 바꾸고 테스트를 실행했는데요 Description: A component required a bean named 'entityManagerFactory' that could not be found. java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125) ~[spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108) ~[spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118) ~[spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) ~[spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43) ~[spring-boot-test-autoconfigure-2.1.7.RELEASE.jar:2.1.7.RELEASE] at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246) ~[spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) [spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) [spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.12.jar:4.12] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) [spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) [spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) [spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) [junit-4.12.jar:4.12] at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) [spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.junit.runner.JUnitCore.run(JUnitCore.java:137) [junit-4.12.jar:4.12] at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) [junit-rt.jar:na] at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) [junit-rt.jar:na] at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) [junit-rt.jar:na] at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) [junit-rt.jar:na] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'postRepository': Cannot create inner bean '(inner bean)#10b3df93' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#10b3df93': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:361) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:131) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1681) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1433) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:826) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877) ~[spring-context-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) ~[spring-context-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:743) ~[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:390) ~[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) ~[spring-boot-2.1.7.RELEASE.jar:2.1.7.RELEASE] at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120) ~[spring-boot-test-2.1.7.RELEASE.jar:2.1.7.RELEASE] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) ~[spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117) ~[spring-test-5.1.9.RELEASE.jar:5.1.9.RELEASE] ... 25 common frames omitted Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#10b3df93': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:314) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:662) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:479) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:346) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] ... 43 common frames omitted Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:771) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1221) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:294) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:303) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE] ... 51 common frames omitted 에러가 발생하는데 메이븐 clean 해도 계속 오류가 나고 원인을 모르겠네요 ㅠㅠ
# 그림 [1] : 기간별 counts # 그림[2] : 2014년 9월에 해당하는 데이타 추출. 21건이 나와야 하는데 안나옴. # 그림 [3] : 데이터 요약 , top값에 분양가 8,067 해당 연도와 월은 2014, 8이라고 뜨는데 기간은 다르게 나옴. 여기 바로 위에 드래그한 부분을 보시면 알겠지만 데이타가 뭔가 맞지가 않습니다. 데이타 전처리할 때 제가 뭔가 오타를 치거나 해서 잘못 붙었는지 검토도 해봤지만 보이질 않습니다. 파일도 올리고 싶은데 안보이네요..,
하나 질문할게 있는데 useEffect(() => { setText(''); }, [addedPost === true]); 이런식으로 useEffect 로 해주셨는데 저 배열안에 조건문은 의미가 없지 않나 싶어서요. 저번 기본강좌에서도 배열안에 조건문 넣는거는 의미가 없다고 말씀하신것 같은데 또 실제 테스트 해본 경과 addedPost가 false 여도 useEffect() 안에 내용이 불리더라고요.
강의에서 사용 된 user와 study를 예로들어 보자면, 두 객체를 새로 생성하여 db에 저장 시 문제가 발생하지 않지만 db에 입력된 user를 findById로 불러와서 새로운 study를 저장 하려고 하면 Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: me.test.jpatest.vo.User.studies, could not initialize proxy - no Session at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:602) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:217) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:581) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at org.hibernate.collection.internal.PersistentSet.add(PersistentSet.java:210) ~[hibernate-core-5.3.10.Final.jar:5.3.10.Final] at me.test.jpatest.vo.User.addStudies(User.java:25) ~[classes/:na] 오류가 발생합니다. User 클래스에서 @OneToMany(mappedBy = "user", fetch = FetchType.EAGER) private Set<Study> studies = new HashSet<>(); 또는 public void addStudies(Study study){ // this.getStudies().add(study); study.setUser(this); } 로 하면 오류는 발생하지 않지만 첫번째 방법은 study를 select하는 불필요한 쿼리가 발생되어 study가 엄청나게 많으면 속도에 영향을 주게 될 것 같고, 두번째 방법은 양방향 관계인데 한쪽에만 관계를 설정하는 문제가 있습니다. 이런경우 어떻게 해결해야 하나요? P.S. Spring data Jpa를 사용하였습니다. 감사합니다
파트2는 파트1처럼 실습 모드 제공 안한나요? https://github.com/corazzon/KaggleStruggle/blob/master/word2vec-nlp-tutorial/tutorial-part-2.ipynb 에 들어가도 파트1처럼 colab에서 실습하는 버튼이 안보입니다 ㅜㅜ
제가 알기로는 mapping 이 Key => value 로 이루어진 함수라고 알고있습니다. 뭐 예를 들면 mappng(key => address) 이면 키값을 넣으면 주소를 mapping 시킨다고 알고있는데 최적화2의 끝부분에 배열의 반복 낭비를 줄이기위해 mapping을 사용하여 구조체와 매핑시킨다고 하였는데 mapping(uint => Student) studentInfo; 이 부분이 이해가 잘가지않습니다. 예를 들어 updateStudentById 함수의 인수값을 _studentId 에11을 넣었다고 가정하면 Student storage student = studentInfo[11]; 이 되고 매핑을 통해 mapping(11 => Student) 가 되는데 그럼 Student 구조체 배열의 11번째가 자동으로 매핑되는건가요 ? 그렇게되서 11번째 Student의 배열이 student가 되고 student.name = _name 을 통해 name이 새로 정의된다는건가요 ? 매핑으로 value 값에 구조체가 들어가니까 개념이 혼란스럽네요..
안녕하세요. Generating result sheet... ------------------------------------------------------------------- Test Case | Passed? | Feedback ------------------------------------------------------------------- test_get_factorial_value | PASSED | Good Job test_is_positive_number | PASSED | Good Job test_main | PASSED | Good Job Reading source file... Transferring results to server... Transfer failed: hash key is already used. ✔ Execution finished. (exit code = 0) ✔ [0] Execution finished. 아래의 문구가 생성됩니다. Transfer failed되었다는 것인데, 저의 hash key를 입력했는데도 이미 사용되었다는 것은 어떤 에러로 이해하면 될까요?