Python Qiita API를 사용하여 키워드 검색

Python Qiita API를 사용하여 키워드 검색



Qiita API 문서
htps : // 코 m/아피/v2/도 cs

액세스 토큰 얻기



설정 > 애플리케이션에서 액세스 토큰 발급
htps : // 코 m / 세친 gs / 아 p ぃ 카치 온 s

검색어



page ... 페이지 번호(1~100)
per_page... 페이지당 포함된 요소 수
query ... 검색 쿼리
검색 옵션 ... .45 67 91 6.

예: PHP 태그 포함 작성 날짜 2021-02-09 게시물 가져오기
주) 날짜 검색 조건은 UTC 시간을 기준으로 이루어지는 모양
https://qiita.com/api/v2/items?page=1&per_page=100&query=tag:PHP+created:>=2021-02-09+created:<=2021-02-09

파이썬 획득



QIITA_ACCESS_TOKEN은 アクセストークンの取得요청하고 결과를 Json으로 가져옵니다.
DataFrame에 저장
search = qiita.get_search("Python", "2021-02-08", "2021-02-10")
QIITA_ACCESS_TOKEN = ""
PER_PAGE = 100


def get_search(tag: str, start_date: str, end_date: str, count: int = 1000):

    df = pd.DataFrame(
        columns=[
            "created_at",
            "id",
            "title",
            "likes_count",
            "url",
            "user_id",
            "user_name",
        ]
    )

    loop = ceil(count / PER_PAGE)
    page = 1

    for v in range(loop):

        page += v
        per_page = PER_PAGE if count - len(df) > PER_PAGE else count - len(df)

        url = (
            f"https://qiita.com/api/v2/items?page={page}&per_page={per_page}&"
            f"query=tag:{tag}+created:>={start_date}+created:<={end_date}"
        )
        headers = {"Authorization": f"Bearer {QIITA_ACCESS_TOKEN}"}
        response = requests.get(url, headers=headers)
        text = json.loads(response.text)

        if not text:
            break

        for v2 in text:
            df = df.append(
                {
                    "created_at": v2["created_at"],
                    "id": v2["id"],
                    "title": v2["title"],
                    "likes_count": v2["likes_count"],
                    "url": v2["url"],
                    "user_id": v2["user"]["id"],
                    "user_name": v2["user"]["name"],
                },
                ignore_index=True,
            )

    return df

결과
                   created_at                    id  ...              user_id       user_name
0   2021-02-10T22:39:34+09:00  f64d7918bb3e39e897a4  ...          tancematrix
1   2021-02-10T22:33:24+09:00  7c1ffc2112252730743c  ...           k_yokozuka  yokozuka kento
2   2021-02-10T22:32:07+09:00  6f2213e9ecfcfc37d5b6  ...           k_yokozuka  yokozuka kento
3   2021-02-10T22:02:35+09:00  28f12e509f10f35fd9cb  ...       RyosukeHattori          Raylan
4   2021-02-10T21:27:46+09:00  6a390e86ff8bd22aa5e8  ...             AKpirion
..                        ...                   ...  ...                  ...             ...
87  2021-02-08T11:26:30+09:00  dae3d01cb1ff6ecb074e  ...       ohisama@github
88  2021-02-08T11:02:58+09:00  aaeb0dccbb30e17bfba9  ...                etern
89  2021-02-08T10:58:13+09:00  2d14c71178f834dfc985  ...       ohisama@github
90  2021-02-08T10:13:23+09:00  1f90724a797f1b63a9c9  ...  morita-toyscreation  TAKASHI MORITA
91  2021-02-08T10:00:57+09:00  ff32350710617bd50544  ...               yudwig

Qiita 게시물을 얻을 수 있습니다.
좋아! 라고 생각하면 LGTM 부탁합니다

【PR】 주말 하카손이라는 이벤트하고 있습니다! → htps : // 에 lp. 굉장했다. 코 m / 자 / 아 rc c ぇ s / 쿠 타타 - 세아 rch - p chion s

좋은 웹페이지 즐겨찾기