[Data Crawling] Selenium ('웹 디자이너를 욕하지 말자') TIP

Dong yeong Kim·2021년 4월 5일
0

Data Crawling

목록 보기
2/4
post-thumbnail

데이터(웹) 크롤링?

웹페이지의 내용을 그대로 가져와서 필요한 데이터를 추출해 내는 것

(본 게시글은 크롤링(셀레니움)에 대한 전반적인 지식이 필요합니다. 아닐수도?)

1. 형식의 정형화

크롤링을 하면서, 매일 매일 좌절을 겪었다.
정형화되지 않은 웹 형식, 아주 신기하게 'p'태그로만 작성한 사이트 등..

아주 적절한 예시가 아래에 있는데


사용자 관점에서는 똑같이 보이는데,
과연 개발자 입장에서는 어떤 형식이 더 이쁜(?) 형식이라 볼 수 있을까?

(위쪽 태그 사용의 예시)

개발자의 의도에따라 다르겠지만 (진짜 어떤 페이지는 p~br이 좋을 수 있다.)
하지만, 아무래도 정형화된 ul~li형식이 더 가시성이 좋다고 볼 수 있다.
(살짝 중요한 변수명을 temp_1, temp_2, temp_3으로 하는 느낌?)

각설하고, 크롤링을 하기 전에는 적어도 개발자 자신이 보기에 형식이 이뻐야한다.
(정말 이뻐야한다, 정말로..)

아직 피부에 와닿지 않는가?

(어떤 덤프 문제의 같은 과목, 같은 챕터이다.)

이제 누가봐도 정형화의 중요성을 알 것이다.
사이트가 없다고 붙잡고 크롤링에 머리를 굴리지 말자, 성질만 나빠진다... (정 없다면..)

2. Class, ID의 활용

어휘력이 부족해 검색을 못하는 탓인지,
아니면 정말 셀레니움에 관한 정보가 없는것인지.
'dirver.find_element~~' 형식의 내용은 많으나, 내가 원하는건 이게 아니였다.

상단의 예시를 다시 들어,

'ol'태그는 전체 문제를 감싸고, 'li'태그는 각각의 문제인 건 알겠어.
형식이 이쁘니까 이제 li를 까보자

여기 웹 개발자는 너무 친절하다.. 정말.

대충 클래스명을 쭉 보다보면 감이 올 것이다.

1.'h5'태그와 'span'태그로 문제를 만들고
2.'wpProQuiz_question'이라는 클래스로 div를 만들고
3. 이제 슬슬 클래스가 많아지는데 머리가 꼬이고
4. 'ul'태그로 보기를 감싸, 'li'태그로 문제들을 하나하나 넣고
5. 'li'태그의 클래스명이 'wpProQuiz_questionListItem'이 있고
6. 'wpProQuiz_questionListItem wpProQuiz_answerCorrect'가 있네?

(다시 말하지만, 해당 글은 셀레니움 사용법이 아니다,
그저 본인이 셀레니움을 사용하며 부딪힌 이슈들을 해결하는 일기장... 일 뿐)

driver로 Xpath를 사용하든, CSS selector를 사용하든, 문제에 봉착했다.

"그래서 내용들은 가져왔는데, 어떻게 정답과 오답을 분류하지?

바로 'driver.find_element_by_class'라는 아름다운 기능이 있지만, 부족하다.

driver로 Xpath, CSS selector 형식을 그대로 출력한 내용은 아래와 같다.

네이버의 로고를 따온 사진

그래서, 네이버 로고든 뭐든, 클래스 이름.. 그러니까 html틱한 무언가를 알고싶다.

정말 쉽게 찾았을지도 모르지만, 이 방법을 몰라 밤낮으로 고생했었는데..
위의 이미지와 같이 'element.get_attribute(' ')형식을 사용할 수 있다.
예시처럼 class의 출력도 가능하고

아래의 'innerHTML'처럼 아름답게 다시 태그 형식으로 꾸며준다.

그럼 다시 본론으로 돌아가서,

1.'h5'태그와 'span'태그로 문제를 만들고
2.'wpProQuiz_question'이라는 클래스로 div를 만들고
3. 이제 슬슬 클래스가 많아지는데 머리가 꼬이고
4. 'ul'태그로 보기를 감싸, 'li'태그로 문제들을 하나하나 넣고
5. 'li'태그의 클래스명이 'wpProQuiz_questionListItem'이 있고 - 클래스로 오답을 찾네?
6. 'wpProQuiz_questionListItem wpProQuiz_answerCorrect'가 있네? - 클래스로 정답을 찾네?

이렇게 get_attribute를 사용하여 쉽게 클래스, 태그들을 읽어올 수 있다.

아무리 찾아봐도 없었는데... 꼭 마지막날에 결과가 나온다.

다들 즐크! (즐거운 크리스마스 아님 ㅋ)

profile
날 것의 기술 '불'로그

0개의 댓글