UiPath

[UiPath] 데이터스크래핑 수동으로 처리하기

HeraPro 2020. 6. 11. 09:58
반응형

 

웹사이트에서 데이터스크래핑을 할 경우 전부다 가져오지 못하는 경우가 있다.

그럴 땐 수동으로 가져와야하는데, Meta Data를 직접 작성하는 방식으로 가져올 수 있다.

 

Meta Data를 수동으로 작성하여 웹사이트의 데이터를 스크래핑해보자!!

 

 

 

데이터스크래핑이 안되는 곳 중에 알고있는 곳은 

'Google뉴스' 페이지 뿐이라 예시는 요기로..

 

 

 

 

세계 뉴스 페이지에서 뉴스들의 제목과 URL을 가져오려고 한다.

 

STUDIO 에서 데이터스크래핑을 눌러 제목을 차례로 두개 선택해주면

메인컬럼과 Url 컬럼을 만들 수 있다.

 

뉴스 제목태그들이 url을 가지고 있으므로 Url컬럼도 체크하여 확인을 누르면 됨!

 

 

 

But 요렇게 URL 만 가져오고 제목은 가져오지 못한다.

 

그래서 저기 '데이터 정의 편집' 을 통해 수동으로 메타데이터를 작성해 제목을 가져올 것이다!

 

 

 

 

 

 <extract>
       <row>로우의 정보들을 적는 곳</row>
       <column></column>
       <column></column>
       <column></column>
        ...
</extract>

 

DataTable 형태로 만들어주는 MetaData 형식은 기본적으로 위처럼 되어있다.

컬럼이 하나일 때는 row태그가 필요하지 않지만 2개 이상일 때는 row태그가 필요하다.

(없으면 에러남)

 

 

 

 

 

 

 

'데이터 정의 편집' 버튼을 누르면 이렇게 작성이 되어있다.

 

 

하나의 셀렉터(우리가 제목 하나만 선택했죠??)로 2개의 attr(속성)을 추출하여(제목,url) 

한개의 column태그에 담아놓은 것을 볼 수 있다.

 

 

*column 태그의 속성 정보

exact : 잘 모르겠.... 확실히 알고난 후 수정할 예정 보통 1로 지정해준다.

name : 원하는 컬럼 이름 (마음대로 수정 가능)

attr : 컬럼의 속성 정보. 

- text  : 말그대로 텍스트들

- href  : url주소들

 

*webctrl  태그의 속성 정보

(웹을 컨틀롤 한다는 의미의 web ctrl 인가?ㅋㅋㅋ)

 

이게 웹 페이지에서 긁어온 메타데이터 정보들임!

보통 한 태그당 tag, class, idx만 있으면 되고

 

데이터를 가지고 있는 해당 태그와, 그의 상위(부모,조상)태그들이 같이 딸려온다.

 

 

 

이러한 메타데이터 정보 수정은 데이터스크래핑이 끝난 후엔 

 

 

 

이렇게 속성에 'ExtractMeradatd' 옵션에서 수정할 수 있다.

 

 

 

 

 

 

본론으로 들어가서,

저 태그들이 URL은 가져오는데 제목단은 못가져오는 상황임으로 저 웹페이지의 메타데이터들을 분석하여 글자가 들어있는 태그를 가져올 계획이다.

 

 

 

준비물 : Studio 프로그램 하나를 더 실행하여 새 프로젝트를 열고

 'Attach Browser' 액티비티를 생성한다.

 

 

화면에 표시를 눌러 웹페이지를 한번 찍어 준 후,

 

 

 

 

 

UiExplorer 열기.

 

 

 

 

 

 

그럼 시각적 트리란에 현재 표시한 웹페이지의 태그가 트리형식으로 쭉 나와있다.

여기서 제목단이 있는 태그를 찾아야하니까, 

 

상단에 '엘리먼트표시' 버튼을 눌러 제목단을 한번 더 찍어준다.

그러면 저렇게 내가 선택한 제목단의 태그를 쉽게 찾을 수 있다.

 

'A' 태그가 선택되어있는 것을 알 수 있다.

 

 

 

오른쪽을 보면 태그를 선택할 수 있는데, 메타데이터를 작성할 때 

위에서도 말했듯이 tag, class, idx 속성만 있으면 된다. 나머지는 다 체크를 풀어주고 class, tag만 선택해주면 idx는 자동으로 생성된다. (생성이 안되면 수동으로 써주면 된다. 값은 1로)

 

 

무튼, 선택된 항목을 보면, A태그가 가지고 있는 속성이 표시된 건데,

innertext가 없다. 보통 text를 가지고 있는 태그들은 innertext 속성이 표시되던데,,

 

그니까 A태그는 실제 제목 텍스트를 가지고 있는 태그가 아니었던 것이다.

그럼 같은 선상의 형제 태그들 중에 아마 제목 텍스트를 가지고 있는 태그가 있을 것이다 !

 

 

 

 

 

왼쪽 시각적트리에서 형재태그를 살펴보면 너무 쉽게 H3 태그가 있다. 

더블클륵해서 가지고 있는 속성을 보면, 제목텍스트를 가지고 있는 것을 확인할 수 있다.

 

그럼 우리는 데이터스크래핑 시 이 H3 태그의 메타데이터를 수동으로  넣어주면 되는 것임!! 

 

 

 

class, tag 속성만 선택해주고, 따로 메모장에 적어놓기.

 

 

 

 

다시 원래 Studio로 돌아와서,

 

 

 

 

이제는 한개의 태그에서 두개의 속성을 뽑아내는 것이 아니라

A태그는 url만,

제목태그는 H3 태그를 추가해줄 것이기 때문에

colum 하나를 더 작성해주어야 한다.

 

그래서 위 사진처럼!

column태그 복사 붙혀넣기하여 하나 더 만들기 > 속성 위아래 변경 > 위 a태그는 방금 적어둔 H3태그 붙혀넣기 > idx는 1로 변경 > 확인!

 

 

 

 

 

 

하면 바로 이 에러가 뜬다.

 

컬럼태그가 두개 이상일 때부터는 row 태그가 있어야하기 때문이다.

 

그래서 다시,

 

 

 

 

 

 

로우 태그를 추가해주었다.

로우는 exact 속성 하나를 주면 되고

하위 태그에는 각 컬럼이 가지고 있는 중복되는 부모조상 태그들을 고대로 복사하여 넣어주면 된다.

 

 

 

 

그 후 확인을 누르면,

 

 

 

 

GOOD~~~~~~~~~~!!

 

 

 

 

 

 

이렇게 제목을 잘 들고온 걸 확인할 수 있다.

예시는 구글뉴스밖에 없어서 아쉽지만 다음에 또 새로운 경우의 수를 발견하면 

다시 글을 파야겠다.

 

반응형