💰 포인트 기능 오픈 💰
현존 최강 크롤링 기술: Scrapy와 Selenium 정복

현존 최강 크롤링 기술: Scrapy와 Selenium 정복

(15개의 수강평)

264명의 수강생
kwansoon.kr 프로필

강사님! 스크래피로 접속시 웹방화벽에서 Deny 메세지를 뿌리는데요.... kwansoon.kr 1일 전

이럴 경우 스크랩핑 할 방법이 궁금합니다. ^^

크롤링 하려면 어떻게 하면 좋을까요? 

kwansoonpark  ~/security_post

 scrapy shell 'https://edu.tta.or.kr/cop/bbs/selectBoardList.do\?bbsId\=BBSMSTR_000000000001'

[s] Available Scrapy objects:

[s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)

[s]   crawler    <scrapy.crawler.Crawler object at 0x10f623590>

[s]   item       {}

[s]   request    <GET https://edu.tta.or.kr/cop/bbs/selectBoardList.do%5C?bbsId%5C=BBSMSTR_000000000001>

[s]   response   <200 http://www.tta.or.kr/deny_notice.jsp>

[s]   settings   <scrapy.settings.Settings object at 0x10f623090>

[s]   spider     <DefaultSpider 'default' at 0x110c13e90>

[s] Useful shortcuts:

[s]   fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)

[s]   fetch(req)                  Fetch a scrapy.Request and update local objects

[s]   shelp()           Shell help (print this help)

[s]   view(response)    View response in a browser

In [1]:

0
JAB 프로필

키보드마우스 동작 자동화. JAB 3일 전

강의 내용 중 7분50초쯤에,

WebDriverWait, TimeoutException 함수가 나오면, 일반적으로 키보드 클릭과 같은 action을 취할때,  좀 다른 것을 쓴다면서 ActionChains(driver).click(~~).perform()을 주로 쓴다고 하셨는데, 

예를들어, 

find_element_by_css_selector('~~').click()

find_element_by_css_selector('~~').send_keys(Keys.RETURN)

같은 것을 사용하면 나중에 문제가 문제가 생기나요?

아니면, 딱히 특별한 이유는 없고, 보통 개발자들이 그냥 그렇게 사용하는 건가요? 아님 특별한 이유가 있는건가요? 

갑자기 궁금증이 생겨서 질문드립니다.

1
JAB 프로필

트위터_selenium 작동시 오류 JAB 5일 전

본 강의대로 트위터 로그인을 selenium을 이용해서 하면 잘 됩니다.

하지만, 문제가 종종 발생합니다. 아래와 같은 에러 메세지가 마지막에 뜹니다.

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="session[username_or_email]"]"}
  (Session info: chrome=80.0.3987.116)

랜덤하게 어떨때는 실행이 잘 되고, 어떨때는이런  에러 메세지가 뜹니다.

그래서 코드 중간 중간에 time.sleep(10) 정도를 넣어 주면, 확실히 에러가 없이 실행이 됩니다.

왜 이런 현상이 발생하는 건가요? 

성능이 좋은 컴퓨터로 하면 중간에 sleep 시간을 넣어주지 않아도 되나요? 아니면, selenium 자체가 가진 문제인가요? 아니면 혹시 인터넷이 느려도 이런 현상이 발생할 수도 있나요?

프로그램은 chromedriver로 하였습니다.(headless chrome 아니고..)

해결방법은 없나요? 중간에 sleep을 넣으면 시간이 너무 많이 걸립니다.

(추가 질문)

본 강의 마지막 부분에 언급하신 내용 중, 

특정 사이트는 동일한 코드를 사용할지라도 chromedriver/phantomjs/headless chrome 중에 되는 것이 있고 안되는 것이 있고, 또한 css_selector로는 찾아지는데, id 로는 찾을수 없는...등등

이러한 경우에는 미리 알수 있는 방법이 있나요? (이 사이트 경우에는 이런방식을 써야 겠구나하는...)

고급자들도 그냥 하나하나 다 해보면서 잘되는 것을 찾아 crawling을 하나요? 

아니면 페이지 소스를 보고 판단 후에 crawling을 하나요?

1
조영훈 프로필

지마켓크롤링1강의에서 csv파일 저장했는데 내용이 들어가 있지 않습니다 조영훈 14일 전

제목 그대로 코딩을 똑같이 따라해서 했는데 단지 선생님과 차이점은 전 vscode를 사용했을 뿐인데 csv파일로 저장을 하면 파일은 생기는데 안에 아무것도 내용이 없습니다... css선택자가 올바르게 됬는지 여부는 scrapy shell에서 제대로 확인했습니다! 코딩 사진 첨부드릴테니 보시고 조언 부탁드려요 ㅜㅜ 

2
yoon 프로필

셀레니움에서 command 키가 작동이 안됩니다. yoon 14일 전

Dave Lee 강사님 덕분에 파이썬에 재미를 느끼게 있는 요즘입니다.^^

요즘은 특히 셀레니움으로 웹사이트를 크롤링한 자동화 프로그램을 만들고 있는데요.

복사/붙여넣기(command + 'c/v')라던가 새탭띄우기(command + 't') 기능이 제대로 작동하지 않더라구요. 일주일 넘게 검색도 해보고 다른 방법이 있을까 찾아도 봤지만 아직도 해결을 못하고 있습니다.

Mac(Catalina)과 크롬을 사용중인데, 이런 경우 어떻게 해결을 해야 할까요?

1
karunogi 프로필

파이썬 문법 관련 질문 karunogi 15일 전

 항상 유익한 강의 감사합니다.

scrapy로 gmarket 크롤링 하기1 강의에서
items.py파일 안에 EcommerceItem 클래스 안에 title 변수에 값을 넣는 부분이 이해가 잘 되지 않아 질문드립니다.

코드를 보면
for title in tltles:
    item = EcommerceItem()
    item['title'] = title
    yield item

이 부분에서 앞전에 강의 하셨던 내용에서 클래스 안의 변수에 값을 넣을 때 .을 붙여서 넣는다고 하셨는데 그 방법과 어떤 차이가 있는지 궁금합니다.

가령 item.title = title 이 코드하고의 차이점이 궁금합니다.

1
조영훈 프로필

크롬 브라우저 로딩시 id/password 자동완성 조영훈 18일 전

예를들어 크롬 브라우저에서 네이버 로그인을 할 때 예전에 제가 id/pw를 쿠키로설정(쿠키개념이 맞나 모르겠습니다..)하여서 id/pw가 자동완성된 상태로 브라우저가 있는데 이럴 때 selenium으로 로그인 조작할 때 어떻게 해야 할까요..? .clear()로 id/pw 입력칸 초기화시켜두 안되네요 ㅜㅜ 

2
karunogi 프로필

속성 값 출력 질문 karunogi 23일 전

크롤링 1탄부터 시작해서 2탄까지 유익한 강의 잘 듣고 있습니다. 감사합니다.

강의에서 배운 내용을 토대로 여러가지 연습을 해보다가 궁금한 점이 생겨 질문합니다.  html코드에서 각 태그는 여러가지 클래스같은 속성들 (id, name 등)이 있는데 지금까지는 해당 태그 안에 있는 TEXT값을 추출하는 함수로 get_text(를 사용했는데, 혹시 이 속성의 값을 출력하려면 어떻게 해야하는지 궁금합니다.

예를들어 <li id="sp_nws162"> 해당 코드에서 id 값인 sp_nws162를 추출하는 방법이 궁금합니다

1
sang hyup Sun 프로필

강의자료및 소스코드는 제공하지 않나요? sang hyup Sun 1달 전

강의 잘 듣고 있습니다. 
강의 내용에 나온 소스코드를 다운받을 수 있는지 궁금합니다.

1
SeongJun Jeong 프로필

css관련 질문 SeongJun Jeong 1달 전

안녕하세요!

<p>...</p> 안에 있는 모든 텍스트와, 하위 클래스의 텍스트를 가져올려면 어떻게 해야하나요??

#journal_comment_279780214383945048857931676069855610723 > div.little-spaced.mb_10.single_comment_box.show_report_spam_link.cfx > div.correction_list.corner-rounded_5.little-spaced > div:nth-child(3) > ul > li.corrected.correct > p

t감사합니다!

1
Howoo Jang 프로필

윈도우에서 shell할 때 Howoo Jang 1달 전

scrapy shell "url"을 써주시면 작동합니다.

윈도우 쓰시는분들 저처럼 막히시면 'url' 대신에 "url"로 시도해보세요.

1
Howoo Jang 프로필

윈도우에서 anaconda prompt쓸 땐 ls 대신에 dir Howoo Jang 1달 전

dir 누르시면 나옵니다. 저만 해매는거 아니었을테니 ㄱ

1
Howoo Jang 프로필

seeko 싸이트 xpath 이렇게 하면 작동함 Howoo Jang 1달 전

싸이트가 좀 달라졌어요

1
Howoo Jang 프로필

안되는 사람은 이렇게 시도 ㄱ Howoo Jang 1달 전

이러면 브라우저 나옵니다.

1
SILENMUS 프로필

네이버 지도 마커 drag 질문입니다. SILENMUS 2달 전

안녕하세요 강사님 

현재 저는 네이버 지도를 크롤링 중입니다.

순조롭게 진행중에 한가지 문제점이 발생하여 질문드립니다.

------------------------------------------------------------------------------

제가 원하는 것은 마커의 위치를 화면 가운데로 옮기는 것 입니다. 

------------------------------------------------------------------------------

셀레늄으로 검색태그에 원하는 주소를 입력하고,

빨간 동그라미로 친 폴드버튼을 누르면, 

보시다 시피 마커가 오른쪽에 위치하는 것을 확인하실 수 있습니다.

저는 저 마커를 가운데로 위치하게 하고 싶습니다.

------------------------------------------------------------------------------

제가 시도했던 방법은 drag & drop을 이용해볼려고 해봤습니다. 

# 마커 셀렉트
marker = WebDriverWait(driver, 10).until(EC.presence_of_element_located
((By.CSS_SELECTOR, "div.leaflet-pane.leaflet-tf-custom-symbol-pane > div.leaflet-image-layer.leaflet-zoom-animated.entry-single-marker > div")))

action = ActionChains(driver)
action.drag_and_drop_by_offset(marker, 700, 0).perform()

일단 초록색 마커는 찾았습니다.

나머지 위의 코드를 사용해보았는데 , 에러는 안나지만 드래그가 되질 않았습니다.

좌표를 아무리 조절해봐도 드래그가 되질 않아서 여기에 질문합니다.

------------------------------------------------------------------------------

어떠한 방법으로 해결할 수 있을까요?

2
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스