2019년 1월 14일 월요일

Capstone Design :: GetSearch, 트위터 고급검색 연산자

졸업작품을 진행중 GetSearch() 함수를 이용하며 고급검색에 대하여 공부하게 됐고

이에 대해서 포스팅합니다.

트위터 고급 검색


1. 다음 단어를 모두 포함

여러 가지 검색어를 모두 포함한 검색방법 입니다.

[트위터 고급검색]을 검색할 경우 [트위터] 와 [고급검색] 두 가지 단어가 

글에 모두 들어가야 한다고 생각하면 됩니다.

AND 연산자라고 생각하면 되겠습니다.

2. 다음 문구 그대로 포함

여러 가지 검색어를 한가지 단어로 인식하고 검색하는 방법입니다.

[트위터 고급검색 사용]을 검색하면 "이 글은 트위터 고급검색 사용 방법에 관한 글입니다"

라는 식으로 나오게 됩니다. 쉽게 말해 여러 단어가 붙어있어야 합니다.

실제로 연산자 사용 시 1번은 [트위터 고급검색 사용] 2번은 ["트위터 고급검색 사용"]으로 

쿼리가 날아가게 됩니다.

3. 다음 단어 적어도 하나 포함

여러 가지 검색어 중 하나라도 포함하는 글을 보여주는 검색 방법 입니다.

[트위터 고급검색 방법]을 검색하면

"트위터는 SNS 중 하나다", "고급검색은 어렵다.". "여러 가지 방법이 있다."

처럼 띄어쓰기로 구분된 각 단어가 하나라도 포함되면 모두 출력됩니다.

OR 연산이라고 생각하면 되겠습니다.

4. 다음 단어 제외

사용처가 궁금한 기능입니다.

5. 해시태그

여러가지 해시태그 검색어중 해시태그에 하나라도 포함되면 글을 보여줍니다

흔히 알고있는 [#트위터], [#고급검색] 형태의 태그 입니다.

해시태그 검색도 3번 연산자와 같이 OR 연산을 합니다.

6. 언어

언어 종류를 선택할수 있습니다.

선택하지 않으면 모든 언어가 기본이고 필요시 원하는 언어를 선택하여 특정 언어로

작성된 글만 볼 수 있습니다.

7. 다음 계정에서 작성

작성자 아이디를 검색합니다. OR 연산을 합니다.

8. 다음 계정으로 보냄

받는사람 아이디를 검색합니다. OR 연산을 합니다.

9. 다음 지역 주변

설정한 지역과 거리를 설정할수 있습니다.

상세 설정은 near:지역 within:거리 로 설정 가능

10. 시작일

지정한 날짜에 생성된 글을 볼 수 있게 해줍니다.

쿼리는 since:2019-01-01 until:2019-01-31 형태로 날아갑니다.

since만 설정하면 설정된 날짜 이후의 모든 글을 볼 수 있고

until만 설정하면 설정된 날짜 이전의 모든 글을 보여줍니다.

==========================================================

프로그래밍과 웹에서 날리는 쿼리가 비슷하므로 여기 같이 작성하겠습니다.

아래 링크로 가면 트위터 고급 검색을 할 수 있습니다.


트위터 검색창에 아무런 검색이나 하고 왼쪽에 있는 검색 필터를 눌러 표시로 바꿔주면

아래에 고급 검색이 나오게 됩니다. 고급 검색을 누르면 위 링크로 이동합니다.

고급 검색 예시

다음 단어 적어도 하나포함 : twitter api

언어 : 한국어

다음 계정에서 작성 : 3LTYxHTRnlMRHX8

날짜 : 2019-01-01 에서 2019-01-14

위 처럼 검색하면 주소창이

https://twitter.com/search?

l=ko&q=twitter%20OR%20api%20from%3A3LTYxHTRnlMRHX8%20

since%3A2019-01-01%20until%3A2019-01-14&src=typd&lang=ko

로 바뀌게 됩니다. 여기서 자세히 볼 부분은 q= 부터입니다.

이는 GetSearch() 함수 인수중 raw_query를 사용하여 쿼리를 작성할때 사용되기 때문입니

다.

이게 무슨 뜻이냐면 어떤 파라미터(parameter)를 이용해야될지 모를때, 문법을 모르겠을때

고급검색을 이용하면 된다는 뜻이기도 합니다.

GetSearch()함수를 이용하는 방법은 여러가지가 있겠지만 그중에서도 2가지 방법을 작성 

하겠습니다.

첫번째는 results =

api.GetSearch(raw_query="q=twitter%20OR%20api%20from%3A3LTYxHTRnlMRHX8

%20since%3A2019-01-01%20until%3A2019-01-14&src=typd&lang=ko") 입니다.

위에서 설명한것처럼 고급 검색을 이용하여 검색하면 get 방식을 이용하여 전달된 값들이

주소창에 나타나게 되는데 raw_query는 이처럼 고급 검색과 같은 방식으로 검색을 하게 됩

니다. 이 방법은 단점이 있는데 값을 전달할때 정확히 전달 되도록 특수문자를 16진수로

표기해서 전달 한다는 것입니다. 공백은 %20, : (쌍점)은 %3A 입니다.

두번째 방법은 파라미터 하나하나에 값을 넣어주는 방법입니다.

results = api.GetSearch(term = product, until = until.strftime("%Y-%m-%d"),

since = since.strftime("%Y-%m-%d"), count=100, lang='ko', result_type ='mixed')

개인적으로 첫번째 방법보다 작성하기가 더 수월했습니다.

아래는 시간함수를 이용했는데 이유는 standard search api 이용자는 최근 날짜에서 7일

지난 트윗 밖에 가져올수 없기 때문입니다. 저같은 경우에는 10일 까지 검색이 됐었습니다.

그 전에 작성된 트윗을 검색하고 싶다면 premium 이용자가 되면 됩니다.

GetSearch() 함수의 반환 값이나 사용 코드는 다른 글에 포스팅 하도록 하겠습니다.

댓글 없음:

댓글 쓰기