파이썬 구글 크롤링 selenium beautifulsoup 웹스크래핑

Поделиться
HTML-код
  • Опубликовано: 21 дек 2024

Комментарии • 101

  • @dasolkang1743
    @dasolkang1743 4 года назад

    같은 경로에 두었는데 실행이 안됩니다.ㅠㅠ.
    머리가 너무 아프네요

  • @proudly6818
    @proudly6818 3 года назад

    pip install beautifulsoup4 하면 사용할 앱 선택하라고 나오는데 visual studio를 선택하면 설치된 library list만 나옵니다. 거기엔 beautifulsoup이 없어요.

  • @인삼-x4u
    @인삼-x4u 4 года назад

    첫번째 예제에서 pyperclip 넣으려면 어떻게 해야 할까요
    정말 궁금하군요

  • @전민석-u8e
    @전민석-u8e 4 года назад

    선생님~~ 같은 버전크롬드라이브도 깔고 같은 파일에 넣었는데 www.google.com/search?q=%ED%8C%8C%EC%9D%B4%EC%8D%AC
    Traceback (most recent call last):
    File "/Users/minzogi/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 76, in start
    stdin=PIPE)
    File "/Users/minzogi/opt/anaconda3/lib/python3.7/subprocess.py", line 800, in __init__
    restore_signals, start_new_session)
    File "/Users/minzogi/opt/anaconda3/lib/python3.7/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
    FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver': 'chromedriver'
    During handling of the above exception, another exception occurred:
    Traceback (most recent call last):
    File "/Users/minzogi/webscraping.py", line 21, in
    driver = webdriver.Chrome()
    File "/Users/minzogi/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
    self.service.start()
    File "/Users/minzogi/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 83, in start
    os.path.basename(self.path), self.start_error_message)
    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see sites.google.com/a/chromium.org/chromedriver/home 이렇게 뜨네요.. 어떻게 해야하나요..?

    • @kimfl
      @kimfl  4 года назад

      chromedriver.exe 파일과 작성하신 파이썬 파일이 같은 경로에 있는데 이 에러가 나온다면 제가 이것만 보고서는 이유를 알 수 가 없습니다. 구글에서 selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH를 검색해보세요.

    • @전민석-u8e
      @전민석-u8e 4 года назад

      감사합니다아ㅠㅜㅠ 혼자 끙끙 앓다가 3일만에 해결이 됐네요..

  • @트롤잼
    @트롤잼 4 года назад +1

    driver= webdriver.Chrome() 에서 오류가 날경우
    1.파일을 같은 경로에 두었는지 확인.
    2.버전이 맞는지 확인.
    3.Chrome 말고 chrome으로 되어있는지 확인 (Chrome이 맞음!)

  • @jackjang1975
    @jackjang1975 4 года назад

    요즘은 영상 안올리시나요~? 넘 좋은데 ㅠ

  • @latteismysun
    @latteismysun 4 года назад +1

    너무 잘 보고 갑니다. 감사합니다. 이런 강의를 무료로 해주시다니 ㅜㅜ

    • @lukamaxim9752
      @lukamaxim9752 3 года назад

      you prolly dont give a damn but does any of you know of a method to get back into an Instagram account??
      I somehow forgot my login password. I would appreciate any help you can give me.

    • @jordanahmed5720
      @jordanahmed5720 3 года назад

      @Luka Maxim instablaster :)

    • @lukamaxim9752
      @lukamaxim9752 3 года назад

      @Jordan Ahmed Thanks for your reply. I found the site through google and im in the hacking process now.
      I see it takes a while so I will get back to you later when my account password hopefully is recovered.

    • @lukamaxim9752
      @lukamaxim9752 3 года назад

      @Jordan Ahmed It worked and I actually got access to my account again. I'm so happy!
      Thank you so much you saved my ass :D

    • @jordanahmed5720
      @jordanahmed5720 3 года назад

      @Luka Maxim no problem xD

  • @user-yh1kz8lh6u
    @user-yh1kz8lh6u 4 года назад

    for i in r:
    print(i.select_one('.LC20lb.DKV0Md').txt)
    print(i.select_one('.iUh30.bc').txt)
    print()
    driver.close()
    -------------------------------------------------------------------
    for i in r:
    print(i.select_one('.LC20lb').txt)
    print(i.select_one('.iUh30.bc').txt)
    print()
    driver.close()
    -----------------------------------------------
    둘 다
    None
    None
    None
    None
    None
    None
    None
    None
    None
    None
    이렇게 나오네요 왜 그럴까요?

    • @kimfl
      @kimfl  4 года назад

      페이지 소스를 확인해보세요. 크롤링해서 가져온게 없다면 None이 나옵니다.

  • @guitarkiller4983
    @guitarkiller4983 3 года назад

    정말 감사합니다. 따라하는 데 정말 잘되네요
    제가 신라면세점에서 스크래핑을 연습중인데
    궁금한것이 있습니다.
    검색된 사이트에서 스크래핑은 어느정도 되는거 같은데
    검색된 사이트에서 상품이 검색이 되면
    검색된 상품에서 그 상품링크를 클릭하고 안에 있는 정보를 빼올려면 어떻게 해야할까요?
    하나씩 다 클릭해서 정보를 빼와야 해야하는데
    아무리 검색을 해보고 여기저기 물어봐도 뚜렷한 대답을 얻기가 좀 힘드네요 ㅠㅠ

  • @samleemactechin3795
    @samleemactechin3795 4 года назад +1

    select_one(‘.ellip’).text 를 사용해도 AttributeError 가 발생합니다. 어떻게 처리 해야 할까요? 도움 부탁드립니다.

    • @kimfl
      @kimfl  4 года назад

      웹페이지의 클래스, 아이디 등 화면 구성은 언제나 바뀔수가 있습니다. 예전에 있었던 클래스가 지금은 다른걸로 바뀌었을수도 있고 검색결과가 다르기때문에 html이 달라졌을수도 있습니다. 찾고자 하는 태그를 확인해서 적용해보시길 바랍니다.

  • @thddnqjq
    @thddnqjq 4 года назад +2

    바로 바로 실행해볼수 있고 나름 괜찮은 결과물이 나오는 이런 실용적인 프로그래밍이 늘 필요하다고 생각했습니다. 될내용 또 부딪힐 문제점 등 섬세하게 준비해주셔서 감사합니다. 재밌습니다. ^^ ㅎㅎ

  • @김준영-b4v
    @김준영-b4v 4 года назад

    질문이 있습니다.
    1. soup = BeautifulSoup(html)
    은 영상과 같이 실행이 되긴 하지만 경고문이 나옵니다.
    soup = BeautifulSoup(html,"html.parser")
    으로 수정시 경고문이 나지 않아요. 이유가 무엇인가요 ??
    from urllib.parse import quote_plus
    from bs4 import BeautifulSoup
    from selenium import webdriver
    baseurl = "www.google.co.kr/search?q="
    plusUrl = input('무엇을 검색할까요? : ')
    url = baseurl + quote_plus(plusUrl)
    print(url)
    driver = webdriver.Chrome()
    driver.get(url)
    html = driver.page_source
    soup = BeautifulSoup(html,"html.parser")
    r = soup.select('.r')
    print(type(r))
    for i in r:
    print(i.select_one('LC20lb.DKV0Md').text)
    #print(i.select_one('iUh30.bc.tjvcx').text)
    print()
    driver.close()
    ========================================================
    UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.
    The code that caused this warning is on line 14 of the file C:/Users/Junyoung/PycharmProjects/untitled/venv/Scripts/크롤링.py. To get rid of this warning, pass the additional argument 'features="lxml"' to the BeautifulSoup constructor.
    soup = BeautifulSoup(html)
    ========================================================

    • @kimfl
      @kimfl  4 года назад

      UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.
      메세지로 나온걸 해석해보시면 이유가 나와있습니다.
      parser를 사용해야하는데 지정을 안해줬기때문에 lxml를 사용한다는 내용이죠.

  • @시간때우기-f3s
    @시간때우기-f3s 5 лет назад +4

    자세하게 설명해주셔서 너무 좋아요^^
    지금까지봐온 크롤링 영상중 최고에요

    • @kimfl
      @kimfl  5 лет назад

      감사합니다~^^

  • @김동현-u9r
    @김동현-u9r 4 года назад

    5:20에서 나오는 data의 빈화면만 계속 뜨고 검색값이 안뜨는데 어떡하나요?

  • @비밀-q7e
    @비밀-q7e 4 года назад

    어제 작업하다가 개발자도구에서 확인되는 html내용이 파이썬에서 불러올때는 일부내용이 json형식으로 되어있어 크롤링이 되지않았는데, 동일한 맥락의 오류인것같네요! 한참 고민했었는데 해결방법을 알려주셔서 감사합니다!!

  • @KCTjunu415
    @KCTjunu415 4 года назад +2

    진짜 감사합니다. 너무 좋아요. 마치 프로그래머가 된 것 같아요 진짜로

  • @pericles_world
    @pericles_world 4 года назад

    크롬드라이버를 버전과 경로를 맞춰서 다운 받았는데 하기와 같은 오류가 나오네요..
    Traceback (most recent call last):
    File "c:/Python/crawling/20200606 - crawling.py", line 11, in
    driver = webdriver.chrome('C:/chromedriver.exe')
    TypeError: 'module' object is not callable
    첫 입문이라서 헤메고 있습니다. 도움 부탁드립니다. 감사합니다.

    • @pericles_world
      @pericles_world 4 года назад

      찾았습니다.
      driver = webdriver.chrome 여기에서 chrome를 대문자 Chrome로 바꿔주니 실행이 되네요. 한가지 해결하니 기분이 좋아집니다. ㅋㅋ

  • @박지민-h8c9l
    @박지민-h8c9l 4 года назад

    혹시 구글api 를 이용해 안드로이드 폰에서 구글계정 무한생성 및 자동변경 가능한 파이썬 모듈도 제작이 가능하신가요? 실제로 제작하여 사용중인 파이썬 샘플은 있습니다 가능하시면 사례는 충분히 하겠습니다!

    • @kimfl
      @kimfl  4 года назад

      죄송하지만 현재 의뢰는 받지 않습니다.

    • @박지민-h8c9l
      @박지민-h8c9l 4 года назад

      @@kimfl 그럼 실례지만 한가지만 여쭤 볼게요 구글api로 서버에서 토큰 값 얻어서 생성된 서비스계정이 구글계정과 동일하게 실효성이 있는 건가요?

  • @juhanlee6202
    @juhanlee6202 4 года назад

    혹시 저 질문이잇어서그러는데오 6:07 분에 보시면
    soup = BeautifulSoup(html) 이라고하셧는데 이게 셀레니움이랑 쓸때만 그런건지?
    저번 영상들은
    Soup = BeautifulSoup(html, 'html') 이런식으로하신거같은데.. 죄송해요 궁금한거 못참아서ㅜㅜ
    그리고 soup.select 랑
    soup.find_all? 이랑같은건가요? 감사드려요

    • @kimfl
      @kimfl  4 года назад +1

      1. 별다른 경우가 아니면 (html, 'html.parser')로 사용하시면 됩니다.
      2. 강의에서 나오는 것처럼 사용법이 다릅니다.
      beautifulsoup 공식 문서를 참고하시면 parser에 대한 내용과 select, find의 사용법을 자세히 살펴보실 수 있습니다.

  • @yj7406
    @yj7406 3 года назад

    좋은 영상 감사합니다. 제가 href=javascriptmove() 형식의 url을 find_all(‘a’)[0].get(‘href’)로 추출해서 urllib.request.urlopen(url) 의 url로 넣어서 그 페이지의 내용을 긁어모으고 싶은데, 이동이 안됩니다. 알려주신 방법을 응용하고 싶은데 제가 많이 부족하네요. 혹시 조언을 구할 수 있을까요..?

  • @곽현민-h5k
    @곽현민-h5k 4 года назад

    안녕하세요 김플님 동영상을 보면서 많은 도음이 되었습니다.
    질문이 한가지 있는데
    ['
    구찌
    >
    브랜드숍
    >
    구찌장지갑
    ']
    이런식으로 리스트형식에서
    제거 후에 리스트에 다시 재정렬 할수있는 방법이없을까요??..

    • @kimfl
      @kimfl  4 года назад

      replace를 사용하면 문자를 변경 할 수 있습니다. 반복하면서 원하는 대로 변경하고 다시 리스트에 넣으면 되겠네요.

  • @김용환-r5b
    @김용환-r5b 3 года назад

    궁금한게 있어서 댓글남깁니다.
    김프님도 beautifulsoup의 select로 가져온 객체일텐데 저는 리스트가 안떠서 왜그런지 궁금합니다
    가 뜨면 그다음은 실행을 할수 없는건가요??ㅠㅠ

    • @leedr1541
      @leedr1541 3 года назад

      늦었지만 이말이 클래스면서 리스트 의미고
      코드상 15번라인 r = soup.select('.r') 중 구글 검색결과의 클래스가 r 에서 다른 것으로 바뀌어서 안된듯합니다.
      '.r' -> '.클래스명' (수정)
      저도 초보라 동일증상으로 안되서 강의 계속 돌려보고 확인했네요.

  • @김세영-b6s
    @김세영-b6s 5 лет назад +1

    헤매고 있었는데 강의 듣고 금방 해결했어요~~ 좋은 강의 감사합니다~!

    • @kimfl
      @kimfl  5 лет назад

      감사합니다^^

  • @dhfl578
    @dhfl578 4 года назад +1

    영상 잘 봤습니다! 근데 웹드라이버는 켜질때 꼭 게스트 창 같은거로만 켜지나요? 혹시 로그인이랑 동기화되있는 상태로 켜질 수 있는지 궁금합니다!

    • @kimfl
      @kimfl  4 года назад

      기존 브라우저의 설정을 그대로 가져와서 자동로그인이 되어있는 상태로 시작 할 수 있습니다.

    • @hyc870331
      @hyc870331 4 года назад

      @@kimfl 기존 브라우저설정 가져오는건 어떻게 하는건가요?

  • @samkim6933
    @samkim6933 4 года назад +1

    좋은 강의 너무 감사드립니다.
    최고입니다.

  • @2010046553
    @2010046553 4 года назад

    ㅠㅠpip install selenium 으로 설치했는데요. from selenium import webdriver 할때 selenium이랑 webdriver가 자동완성으로 안뜨는데 이러면 설치 잘 안된거 아닌가요?
    beautifulsoup은 beau까지만 입력해도 자동완성으로 뜨는데..

    • @kimfl
      @kimfl  4 года назад

      자동완성은 편집기의 기능이고 셀레니움 사용이 잘 된다면 설치가 잘 된거겠죠?

  • @assist793
    @assist793 4 года назад

    명강 감사합니다.

  • @parisienneyun3694
    @parisienneyun3694 4 года назад

    quote_plus 가 없다고 나오는데요. 이것도 설치해줘야 하는건가요?아나콘다 프롬프트에서 pip install quote_plus 해서 설치 하려고 했는데 안되네요. ㅜㅜ

    • @kimfl
      @kimfl  4 года назад

      파일명, 작성하신 코드, 에러메세지를 올려주세요.

    • @parisienneyun3694
      @parisienneyun3694 4 года назад

      @@kimfl 죄송합니다. 이제서야 좋은 답변을 얻을 수 있는 방법이라는 영상을 봤습니다.ㅜ 주피터 노트북을 사용했구요 '파이썬 구글 크롤링 selenium beautifulsoup 웹스크래핑'을 따라하다가 에러가 발생했어요. 에러는 name 'quote_plus' is not defined 라고 떴습니다. 아나콘다 프롬프트에서 pip install quote_plus를 쳐봐도 에러가 뜨네요.

    • @parisienneyun3694
      @parisienneyun3694 4 года назад

      @@kimfl 죄송합니다. 좋은 답변을 얻는 영상이라는 것을 이제서야 보고 질문을 제대로 올리지 못했습니다. 다행히 그 오류가 사라졌어요. 저도 왜인지는 모르겠습니다. 어쨌든 다행이라고 생각하고 계속 따라서 하고 있습니다. 앞으로도 좋은 영상을 많이 올려주실거라고 기대하면서 저도 따라서 연습하겠습니다. !

    • @kimfl
      @kimfl  4 года назад

      해결되어서 다행입니다.

  • @felixkim5501
    @felixkim5501 5 лет назад

    안녕하세요. 올려주시는 강의들 잘 보고 있습니다. 문의 사항이 있는데요... 네이버에 셀레니움을 이용하여 로그인할 시 "새로운 브라우저"로 로그인을 했다면 "등록"하라는 창이 계속 뜹니다. xpath와 click()을 이용해도 "등록"버튼이 클릭되지 않는데요. 혹시 해결 방법이 있을까요? 항상 고맙습니다.

    • @kimfl
      @kimfl  5 лет назад +1

      등록 버튼 클릭안하고 그 화면에서 그냥 바로 주소 바꿔서 네이버 들어가면 로그인되어있습니다. 버튼을 꼭 클릭하지 않더라도 진행이 가능합니다. 그리고 클릭이 안되는건 클릭할 수 없는 html요소를 선택했기 때문입니다. ruclips.net/video/2EBrICPZVLY/видео.html 이 강의도 한번 보시면 도움이 될겁니다.

    • @felixkim5501
      @felixkim5501 5 лет назад

      @@kimfl 고맙습니다~

  • @커피-j3t
    @커피-j3t 5 лет назад

    김플님^^ 저녁 식사 하셨어요? ㅎ
    질문 하나 드려도 될런지요? ...질문 드릴때마다 미안한 맘이 늘 있습니다 ㅠㅠ

    • @kimfl
      @kimfl  5 лет назад +1

      print(table_4) 이부분을 print(table_4.text) 이렇게 바꿔보세요.
      그리고,
      table_3 = soup.find("div", {"class":"plan_poptip jimok_popup"}).span
      또는,
      table_3 = soup.select_one('.plan_poptip.jimok_popup span') 둘중 한가지를 선택하시고,
      print(table_3.text)
      이렇게 하셔도 '대' 가 출력됩니다.

    • @커피-j3t
      @커피-j3t 5 лет назад

      @@kimfl

    • @kimfl
      @kimfl  5 лет назад +1

      다양한 방법이 있겠지만... 다른걸 배우지 않고 해결하려면,
      soup = BeautifulSoup(html, 'html.parser')
      html = str(soup).replace('','')
      soup = BeautifulSoup(html, 'html.parser')
      html 가져온걸 str로 바꿔서 주석 부분을 없애고 다시 html변수에 넣어주고,
      그걸 다시 soup로 지정하면 이부분이 없는 html으로 작업 할 수 있습니다.

    • @커피-j3t
      @커피-j3t 5 лет назад

      @@kimfl 안주무시고 계셨군요 ^^
      저도 replace를 쪼물딱거리고 있었어요
      그리고 주석문 속의 문자를 찾는 방법을
      구글링 하고 있는데
      성공하면 바로 댓글에 올리겠습니다
      정말이지 감사합니다

    • @커피-j3t
      @커피-j3t 5 лет назад +1

      @@kimfl 처방은 언제나 간결하고 확실합니다.
      조석으로 쌀쌀하단 생각이 듭니다. 김플님 감기 조심하세요
      업무가 자꾸 많아지는데...그래도 자주 오겠습니다 감사합니다

  • @kanghan3065
    @kanghan3065 5 лет назад

    구글글 유용하게 봤습니다^^
    이거보고 구글메시지를 사용중인데 크롤링해서 보관하면 좋겠다 싶어 시도했는데
    출력을 찍어보면 태그소스가 암호화 되어 안되는군요
    요즘 kt문자를 저장하는 방법을 유료로도 써봤으나 영 마땅치 않아서 시도해봤습니다
    님의 조언 부탁드립니다

    • @kimfl
      @kimfl  5 лет назад

      죄송한데 구글메시지가 문자메시지를 웹에서 사용하는건가요? 제가 웹페이지를 봐야 페이지 소스코드를 볼텐데 어떤건지 모르겠습니다;

  • @pcpuk1004
    @pcpuk1004 4 года назад +1

    좋은 강의 감사합니다~! 셀레니움에 대해서 개념 잡고 갑니다.

  • @bKpark-sr6wk
    @bKpark-sr6wk 4 года назад

    print(i.select_one('.ellip').text)
    AttributeError: 'NoneType' object has no attribute 'text'
    웹페이지를 열고나서 이런에러가 나네요
    beautifulsoup4 pip 할때 버전이 4.4.1 이라고 뜨던데 영상에서 보는 버전보다 낮아서 그런건지?
    다른 이유인지 모르겟지만 text 속성 인식을 못하는듯... 알려주세요.

    • @kimfl
      @kimfl  4 года назад

      에러메시지 그대로 입니다. None이라서 텍스트가 없는거죠.

  • @최효선-w8i
    @최효선-w8i 5 лет назад +1

    일일 일영상 감사합니다..^^

    • @kimfl
      @kimfl  5 лет назад +1

      ㅎㅎ;감사합니다. 매일 강의를 올리고 싶은데 생각보다 쉽지않네요;ㅎㅎ

  • @최창준-g5m
    @최창준-g5m 4 года назад +1

    좋은 강의 감사합니다.
    i.select_one('.Class 이름').text 입력 시에, Class 이름 내에 띄어쓰기가 있으면 attribute 에러가 뜨네요.
    ex) .LC20lb DKV0Md > .LC20lb 로 해주면 에러 해결됨.
    초보라 무슨 문제인진 모르겠지만.. 혹시 같은 문제이신분들 참고하세요.
    변수명 같은데에 띄어쓰기 안쓰고 '_' 쓰는걸 배운것 같아서.. 고민하다 한번 해보니 되네요

    • @kimfl
      @kimfl  4 года назад +1

      위 문제는 클래스 이름에 띄어쓰기가 있는 게 아니라 클래스를 여러 개 사용한 겁니다.
      html에서 클래스는 원래 여러 개 사용하는 게 가능합니다. 선택할 때는 사용하신 방법대로 한 개만 가져와도 선택이 됩니다. 하지만 이 방법은 앞에 가져온 클래스가 다른데도 사용된다면 그것도 같이 선택될 테니 html을 잘 확인해보고 사용해야 합니다.
      그리고 클래스가 여러 개로 되어있는 걸 선택하는 방법은 지금 이 강의에도 나와있습니다.

    • @최창준-g5m
      @최창준-g5m 4 года назад

      HTML 공부를 좀 더 해보니 Class는 여러 개를 쓸 수 있다는걸 알았습니다. 김플님 감사합니다.

  • @김아무개씨-s9b
    @김아무개씨-s9b 5 лет назад +1

    멋지군요

    • @kimfl
      @kimfl  5 лет назад

      감사합니다~

  • @healthy_three_meal
    @healthy_three_meal 5 лет назад

    감사합니다.

    • @healthy_three_meal
      @healthy_three_meal 5 лет назад

      깃헙은 따로 쓰시지 않으신가요??

    • @kimfl
      @kimfl  5 лет назад

      감사합니다. 강의에서 깃헙은 사용하지는 않고 있습니다.^^

  • @ashowl
    @ashowl 4 года назад

    감사합니다.