인프런 커뮤니티 질문&답변

Hannah Uh님의 프로필 이미지
Hannah Uh

작성한 질문수

빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술

[실습1] Crawling Recursive Way

섹션2 실습 1에서 질문 있습니다.

해결된 질문

작성

·

395

·

수정됨

0

안녕하세요, 강사님.

좋은 강의 올려주셔서 감사합니다. 보면서 열심히 따라하고 있습니다. 저는 비전공자라서 처음 들을 때는 물음표의 연속이었지만 신기하게 두번째 들을 때는 이해가 되고 점점 따라하기 수월해지고 있습니다.

다름이 아니라 두가지 질문이 있어서 문의드립니다.

1. ec2 linux/Ubuntu를 ssh로 접속한 상태에서 크롬페이지를 새창으로 뿅 띄우는 것이 안됩니다 ㅠㅠ

처음에 스크립트를 실행했을 때는 아래와 같은 에러 때문에 실행이 안되었습니다.

AttributeError: 'str' object has no attribute 'capabilities'

여러가지 찾아보니 이유는 셀리니움이 업데이트 되어서 이제 크롬 드라이버를 다운받지 않아도 된다고 하더라구요. 그래서 아래와 같이 추가하고 경로를 비우고 실행하면 된다고 합니다.

chrome_options = webdriver.ChromeOptions()

driver = webdriver.Chrome()

그랬더니 에러를 뿜지 않고 그냥 스크립트가 종료되어 버리는 것 같아요. 다만 sudo를 이용해서 스크립트를 실행하면 아래와 같은 에러가 나타납니다.

=====

ubuntu@ip-172-31-43-47:~/bigdata$ sudo python3 5_chrome.py

Traceback (most recent call last):

File "/home/ubuntu/bigdata/5_chrome.py", line 4, in <module>

driver = webdriver.Chrome()

File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/chrome/webdriver.py", line 45, in init

super().__init__(

File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/chromium/webdriver.py", line 61, in init

super().__init__(command_executor=executor, options=options)

File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 209, in init

self.start_session(capabilities)

File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 293, in start_session

response = self.execute(Command.NEW_SESSION, caps)["value"]

File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 348, in execute

self.error_handler.check_response(response)

File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response

raise exception_class(message, screen, stacktrace)

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Chrome failed to start: exited normally.

(session not created: DevToolsActivePort file doesn't exist)

(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

Stacktrace:

#0 0x562ff172ef83 <unknown>

#1 0x562ff13e7cf7 <unknown>

#2 0x562ff141f60e <unknown>

#3 0x562ff141c26e <unknown>

#4 0x562ff146c80c <unknown>

#5 0x562ff1460e53 <unknown>

#6 0x562ff1428dd4 <unknown>

#7 0x562ff142a1de <unknown>

#8 0x562ff16f3531 <unknown>

#9 0x562ff16f7455 <unknown>

#10 0x562ff16dff55 <unknown>

#11 0x562ff16f80ef <unknown>

#12 0x562ff16c399f <unknown>

#13 0x562ff171c008 <unknown>

#14 0x562ff171c1d7 <unknown>

#15 0x562ff172e124 <unknown>

#16 0x7fc769a94ac3 <unknown>

====

혹시나 해서 linux 인스턴스에서 다시 수행해보았지만 linux에서는 sudo 일 때와 아닐 때 모두 에러 메시지는 똑같네요... ㅠㅠ

뒤에 실습 2에서 linkedIn을 제어할 때에도 새롭게 창이 뜨는 것으로 보이니 해결하고 넘어가야 할텐데 답을 찾을 수가 없습니다 ㅠㅠ

무엇이 문제일까요? 도와주세요 선생님 ㅠㅠ

 

2."https://docs.python.org/3.5/library/"페이지를 크롤링해오는 스크립트가 에러 없이 일부만 실행되는 현상이 있는데 이유를 모르겠습니다. 스크립트를 실행하면 딱 이렇게 pygments.css 까지만 크롤링이 되고 그 다음 단계인 /library/intro.html 아래 페이지 정보는 크롤링되지 않은 상태에서 작업이 끝납니다.

======================

(venv) [ec2-user@ip-xxx-xxx bigdata]$ python3 practice1.py

downloaded = https://docs.python.org/3.5/library/

analyzed html = https://docs.python.org/3.5/library/

downloaded = https://docs.python.org/3.5/_static/pydoctheme.css

downloaded = https://docs.python.org/3.5/_static/pygments.css

======================

 

몇번이나 공유해주신 코드와 비교해보아도 틀린 부분을 못찾겠네요 ㅠㅠ 스크립트가 에러를 뿜지도 않고 일단 일부 정보라도 가져오는 상태라 더 확인이 어렵습니다 ㅠㅠ

혹시 이런 경우에 대해 어떻게 해결하는지 아실까요?

새해 복 많이 받으세요!

 

 

 

답변 2

0

Hannah Uh님의 프로필 이미지
Hannah Uh
질문자

아 로컬에서 하셨군요. 어쩐지 ㅎㅎ

셀레니움은 로컬에서 한번 더 시도해보겠습니다.감사합니다.

 

크롤링 스크립트는 몇번이나 보았는데 사실... 강사님이 화면에서 보여주신 스크립트와 똑같이 짰다고 생각합니다. 제 선에서는... 도저히 차이점을 못찾겠네요 . ㅠ

그리고 답변에 공유해주신 코드에서 아래 줄에 css 다음에 $가 빠진 것 같은데 맞을까요?

if not re.search(r".css", link_url): continue

사실 강의 영상에서도 ppt에는 $가 있고 직접 수행하신 스크립트에는 빠져있어서요 잘 모르는 입장에서는 좀 헷갈렸습니다. 어쨋든 두개 다 수행해봐도 결과는 같았네요ㅜ

실례가 되지 않는다면 이 부분 스크립트만 공유해주실 수 있으면 복붙해서 제가 따라 쓴 스크립트하고 비교해보고자 합니다.

 

 

J.PHIL님의 프로필 이미지
J.PHIL
지식공유자

네 메일 주소 남겨주시면 보내드리겠습니다.

Hannah Uh님의 프로필 이미지
Hannah Uh
질문자

보내주신 스크립트와 비교해보니 if 문 들여쓰기가 잘못되어 있었네요. 수정하니까 정상적으로 잘 돌아갑니다. ㅠㅠ

if 문 tab 하나 더 치는 게 에러를 유발할 수도 있군요 ㅠㅠ

덕분에 해결했습니다 감사합니다~

0

J.PHIL님의 프로필 이미지
J.PHIL
지식공유자

안녕하세요 Hannah Uh 님,

우선 제 강의에 관심을 가져주셔서 감사합니다.

 

 

  • 아마 리턴하는 부분 또는 조건절에서 오타 있는듯 한데 다시 한번 살펴보시겠어요?

     

    1. 가령 아래 부분도 잘 일치되어있는지 살펴보고

      image

    2. 만약 똑같다면 다른 함수도 한번 살펴보시면 좋을 것 같습니다.

       

 

Hannah Uh님의 프로필 이미지
Hannah Uh

작성한 질문수

질문하기