Тёмный

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

Programmer Kimfl Studio
Подписаться 27 тыс.
Просмотров 29 тыс.
50% 1

Опубликовано:

 

2 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 101   
@시간때우기-f3s
@시간때우기-f3s 5 лет назад
자세하게 설명해주셔서 너무 좋아요^^ 지금까지봐온 크롤링 영상중 최고에요
@kimfl
@kimfl 5 лет назад
감사합니다~^^
@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이 나옵니다.
@thddnqjq
@thddnqjq 4 года назад
바로 바로 실행해볼수 있고 나름 괜찮은 결과물이 나오는 이런 실용적인 프로그래밍이 늘 필요하다고 생각했습니다. 될내용 또 부딪힐 문제점 등 섬세하게 준비해주셔서 감사합니다. 재밌습니다. ^^ ㅎㅎ
@pcpuk1004
@pcpuk1004 4 года назад
좋은 강의 감사합니다~! 셀레니움에 대해서 개념 잡고 갑니다.
@latteismysun
@latteismysun 4 года назад
너무 잘 보고 갑니다. 감사합니다. 이런 강의를 무료로 해주시다니 ㅜㅜ
@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
@assist793
@assist793 3 года назад
명강 감사합니다.
@dasolkang1743
@dasolkang1743 3 года назад
같은 경로에 두었는데 실행이 안됩니다.ㅠㅠ. 머리가 너무 아프네요
@트롤잼
@트롤잼 4 года назад
driver= webdriver.Chrome() 에서 오류가 날경우 1.파일을 같은 경로에 두었는지 확인. 2.버전이 맞는지 확인. 3.Chrome 말고 chrome으로 되어있는지 확인 (Chrome이 맞음!)
@samleemactechin3795
@samleemactechin3795 4 года назад
select_one(‘.ellip’).text 를 사용해도 AttributeError 가 발생합니다. 어떻게 처리 해야 할까요? 도움 부탁드립니다.
@kimfl
@kimfl 4 года назад
웹페이지의 클래스, 아이디 등 화면 구성은 언제나 바뀔수가 있습니다. 예전에 있었던 클래스가 지금은 다른걸로 바뀌었을수도 있고 검색결과가 다르기때문에 html이 달라졌을수도 있습니다. 찾고자 하는 태그를 확인해서 적용해보시길 바랍니다.
@proudly6818
@proudly6818 3 года назад
pip install beautifulsoup4 하면 사용할 앱 선택하라고 나오는데 visual studio를 선택하면 설치된 library list만 나옵니다. 거기엔 beautifulsoup이 없어요.
@guitarkiller4983
@guitarkiller4983 3 года назад
정말 감사합니다. 따라하는 데 정말 잘되네요 제가 신라면세점에서 스크래핑을 연습중인데 궁금한것이 있습니다. 검색된 사이트에서 스크래핑은 어느정도 되는거 같은데 검색된 사이트에서 상품이 검색이 되면 검색된 상품에서 그 상품링크를 클릭하고 안에 있는 정보를 빼올려면 어떻게 해야할까요? 하나씩 다 클릭해서 정보를 빼와야 해야하는데 아무리 검색을 해보고 여기저기 물어봐도 뚜렷한 대답을 얻기가 좀 힘드네요 ㅠㅠ
@dhfl578
@dhfl578 4 года назад
영상 잘 봤습니다! 근데 웹드라이버는 켜질때 꼭 게스트 창 같은거로만 켜지나요? 혹시 로그인이랑 동기화되있는 상태로 켜질 수 있는지 궁금합니다!
@kimfl
@kimfl 4 года назад
기존 브라우저의 설정을 그대로 가져와서 자동로그인이 되어있는 상태로 시작 할 수 있습니다.
@hyc870331
@hyc870331 4 года назад
@@kimfl 기존 브라우저설정 가져오는건 어떻게 하는건가요?
@yj7406
@yj7406 3 года назад
좋은 영상 감사합니다. 제가 href=javascriptmove() 형식의 url을 find_all(‘a’)[0].get(‘href’)로 추출해서 urllib.request.urlopen(url) 의 url로 넣어서 그 페이지의 내용을 긁어모으고 싶은데, 이동이 안됩니다. 알려주신 방법을 응용하고 싶은데 제가 많이 부족하네요. 혹시 조언을 구할 수 있을까요..?
@KCTjunu415
@KCTjunu415 4 года назад
진짜 감사합니다. 너무 좋아요. 마치 프로그래머가 된 것 같아요 진짜로
@인삼-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일만에 해결이 됐네요..
@비밀-q7e
@비밀-q7e 3 года назад
어제 작업하다가 개발자도구에서 확인되는 html내용이 파이썬에서 불러올때는 일부내용이 json형식으로 되어있어 크롤링이 되지않았는데, 동일한 맥락의 오류인것같네요! 한참 고민했었는데 해결방법을 알려주셔서 감사합니다!!
@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로 바꿔주니 실행이 되네요. 한가지 해결하니 기분이 좋아집니다. ㅋㅋ
@김동현-u9r
@김동현-u9r 4 года назад
5:20에서 나오는 data의 빈화면만 계속 뜨고 검색값이 안뜨는데 어떡하나요?
@김용환-r5b
@김용환-r5b 3 года назад
궁금한게 있어서 댓글남깁니다. 김프님도 beautifulsoup의 select로 가져온 객체일텐데 저는 리스트가 안떠서 왜그런지 궁금합니다 가 뜨면 그다음은 실행을 할수 없는건가요??ㅠㅠ
@leedr1541
@leedr1541 3 года назад
늦었지만 이말이 클래스면서 리스트 의미고 코드상 15번라인 r = soup.select('.r') 중 구글 검색결과의 클래스가 r 에서 다른 것으로 바뀌어서 안된듯합니다. '.r' -> '.클래스명' (수정) 저도 초보라 동일증상으로 안되서 강의 계속 돌려보고 확인했네요.
@juhanlee6202
@juhanlee6202 4 года назад
혹시 저 질문이잇어서그러는데오 6:07 분에 보시면 soup = BeautifulSoup(html) 이라고하셧는데 이게 셀레니움이랑 쓸때만 그런건지? 저번 영상들은 Soup = BeautifulSoup(html, 'html') 이런식으로하신거같은데.. 죄송해요 궁금한거 못참아서ㅜㅜ 그리고 soup.select 랑 soup.find_all? 이랑같은건가요? 감사드려요
@kimfl
@kimfl 4 года назад
1. 별다른 경우가 아니면 (html, 'html.parser')로 사용하시면 됩니다. 2. 강의에서 나오는 것처럼 사용법이 다릅니다. beautifulsoup 공식 문서를 참고하시면 parser에 대한 내용과 select, find의 사용법을 자세히 살펴보실 수 있습니다.
@ashowl
@ashowl 4 года назад
감사합니다.
@박지민-h8c9l
@박지민-h8c9l 4 года назад
혹시 구글api 를 이용해 안드로이드 폰에서 구글계정 무한생성 및 자동변경 가능한 파이썬 모듈도 제작이 가능하신가요? 실제로 제작하여 사용중인 파이썬 샘플은 있습니다 가능하시면 사례는 충분히 하겠습니다!
@kimfl
@kimfl 4 года назад
죄송하지만 현재 의뢰는 받지 않습니다.
@박지민-h8c9l
@박지민-h8c9l 4 года назад
@@kimfl 그럼 실례지만 한가지만 여쭤 볼게요 구글api로 서버에서 토큰 값 얻어서 생성된 서비스계정이 구글계정과 동일하게 실효성이 있는 건가요?
@곽현민-h5k
@곽현민-h5k 4 года назад
안녕하세요 김플님 동영상을 보면서 많은 도음이 되었습니다. 질문이 한가지 있는데 [' 구찌 > 브랜드숍 > 구찌장지갑 '] 이런식으로 리스트형식에서 제거 후에 리스트에 다시 재정렬 할수있는 방법이없을까요??..
@kimfl
@kimfl 4 года назад
replace를 사용하면 문자를 변경 할 수 있습니다. 반복하면서 원하는 대로 변경하고 다시 리스트에 넣으면 되겠네요.
@김세영-b6s
@김세영-b6s 4 года назад
헤매고 있었는데 강의 듣고 금방 해결했어요~~ 좋은 강의 감사합니다~!
@kimfl
@kimfl 4 года назад
감사합니다^^
@samkim6933
@samkim6933 4 года назад
좋은 강의 너무 감사드립니다. 최고입니다.
@kanghan3065
@kanghan3065 4 года назад
구글글 유용하게 봤습니다^^ 이거보고 구글메시지를 사용중인데 크롤링해서 보관하면 좋겠다 싶어 시도했는데 출력을 찍어보면 태그소스가 암호화 되어 안되는군요 요즘 kt문자를 저장하는 방법을 유료로도 써봤으나 영 마땅치 않아서 시도해봤습니다 님의 조언 부탁드립니다
@kimfl
@kimfl 4 года назад
죄송한데 구글메시지가 문자메시지를 웹에서 사용하는건가요? 제가 웹페이지를 봐야 페이지 소스코드를 볼텐데 어떤건지 모르겠습니다;
@felixkim5501
@felixkim5501 4 года назад
안녕하세요. 올려주시는 강의들 잘 보고 있습니다. 문의 사항이 있는데요... 네이버에 셀레니움을 이용하여 로그인할 시 "새로운 브라우저"로 로그인을 했다면 "등록"하라는 창이 계속 뜹니다. xpath와 click()을 이용해도 "등록"버튼이 클릭되지 않는데요. 혹시 해결 방법이 있을까요? 항상 고맙습니다.
@kimfl
@kimfl 4 года назад
등록 버튼 클릭안하고 그 화면에서 그냥 바로 주소 바꿔서 네이버 들어가면 로그인되어있습니다. 버튼을 꼭 클릭하지 않더라도 진행이 가능합니다. 그리고 클릭이 안되는건 클릭할 수 없는 html요소를 선택했기 때문입니다. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-2EBrICPZVLY.html 이 강의도 한번 보시면 도움이 될겁니다.
@felixkim5501
@felixkim5501 4 года назад
@@kimfl 고맙습니다~
@김아무개씨-s9b
@김아무개씨-s9b 5 лет назад
멋지군요
@kimfl
@kimfl 5 лет назад
감사합니다~
@김준영-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를 사용한다는 내용이죠.
@커피-j3t
@커피-j3t 4 года назад
김플님^^ 저녁 식사 하셨어요? ㅎ 질문 하나 드려도 될런지요? ...질문 드릴때마다 미안한 맘이 늘 있습니다 ㅠㅠ
@kimfl
@kimfl 4 года назад
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 4 года назад
@@kimfl
@kimfl
@kimfl 4 года назад
다양한 방법이 있겠지만... 다른걸 배우지 않고 해결하려면, soup = BeautifulSoup(html, 'html.parser') html = str(soup).replace('','') soup = BeautifulSoup(html, 'html.parser') html 가져온걸 str로 바꿔서 주석 부분을 없애고 다시 html변수에 넣어주고, 그걸 다시 soup로 지정하면 이부분이 없는 html으로 작업 할 수 있습니다.
@커피-j3t
@커피-j3t 4 года назад
@@kimfl 안주무시고 계셨군요 ^^ 저도 replace를 쪼물딱거리고 있었어요 그리고 주석문 속의 문자를 찾는 방법을 구글링 하고 있는데 성공하면 바로 댓글에 올리겠습니다 정말이지 감사합니다
@커피-j3t
@커피-j3t 4 года назад
@@kimfl 처방은 언제나 간결하고 확실합니다. 조석으로 쌀쌀하단 생각이 듭니다. 김플님 감기 조심하세요 업무가 자꾸 많아지는데...그래도 자주 오겠습니다 감사합니다
@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 года назад
해결되어서 다행입니다.
@jackjang1975
@jackjang1975 4 года назад
요즘은 영상 안올리시나요~? 넘 좋은데 ㅠ
@최효선-w8i
@최효선-w8i 5 лет назад
일일 일영상 감사합니다..^^
@kimfl
@kimfl 5 лет назад
ㅎㅎ;감사합니다. 매일 강의를 올리고 싶은데 생각보다 쉽지않네요;ㅎㅎ
@최창준-g5m
@최창준-g5m 4 года назад
좋은 강의 감사합니다. i.select_one('.Class 이름').text 입력 시에, Class 이름 내에 띄어쓰기가 있으면 attribute 에러가 뜨네요. ex) .LC20lb DKV0Md > .LC20lb 로 해주면 에러 해결됨. 초보라 무슨 문제인진 모르겠지만.. 혹시 같은 문제이신분들 참고하세요. 변수명 같은데에 띄어쓰기 안쓰고 '_' 쓰는걸 배운것 같아서.. 고민하다 한번 해보니 되네요
@kimfl
@kimfl 4 года назад
위 문제는 클래스 이름에 띄어쓰기가 있는 게 아니라 클래스를 여러 개 사용한 겁니다. html에서 클래스는 원래 여러 개 사용하는 게 가능합니다. 선택할 때는 사용하신 방법대로 한 개만 가져와도 선택이 됩니다. 하지만 이 방법은 앞에 가져온 클래스가 다른데도 사용된다면 그것도 같이 선택될 테니 html을 잘 확인해보고 사용해야 합니다. 그리고 클래스가 여러 개로 되어있는 걸 선택하는 방법은 지금 이 강의에도 나와있습니다.
@최창준-g5m
@최창준-g5m 4 года назад
HTML 공부를 좀 더 해보니 Class는 여러 개를 쓸 수 있다는걸 알았습니다. 김플님 감사합니다.
@2010046553
@2010046553 4 года назад
ㅠㅠpip install selenium 으로 설치했는데요. from selenium import webdriver 할때 selenium이랑 webdriver가 자동완성으로 안뜨는데 이러면 설치 잘 안된거 아닌가요? beautifulsoup은 beau까지만 입력해도 자동완성으로 뜨는데..
@kimfl
@kimfl 4 года назад
자동완성은 편집기의 기능이고 셀레니움 사용이 잘 된다면 설치가 잘 된거겠죠?
@healthy_three_meal
@healthy_three_meal 5 лет назад
감사합니다.
@healthy_three_meal
@healthy_three_meal 5 лет назад
깃헙은 따로 쓰시지 않으신가요??
@kimfl
@kimfl 5 лет назад
감사합니다. 강의에서 깃헙은 사용하지는 않고 있습니다.^^
@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이라서 텍스트가 없는거죠.
Далее
МАЛОЙ ГАИШНИК
00:35
Просмотров 495 тыс.
인생은 짧아요 엑셀 대신 파이썬 - 이승준
40:40