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
Reference
이 문제에 관하여(Python Qiita API를 사용하여 키워드 검색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morita-toyscreation/items/774bc1835aad84e72967
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
https://qiita.com/api/v2/items?page=1&per_page=100&query=tag:PHP+created:>=2021-02-09+created:<=2021-02-09
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
Reference
이 문제에 관하여(Python Qiita API를 사용하여 키워드 검색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/morita-toyscreation/items/774bc1835aad84e72967텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)