Qiita Advent Calendar의 랭킹을 Python으로 스크래핑 해 보았습니다.

Qiit의 Advent Calender에는 순위가 공개됩니다.
전체 캘린더 랭킹

처음에는 재미있는 캘린더를 찾는 것이 목적으로 조금 보았습니다만, 잘 살펴보면 저희도 랭킹되었습니다!



다만, 좋아하는 수가 1이라도 랭킹되고 있으므로, 뭐 당연합니다만.

랭킹되고 있는 것을 알고 나서, 「오늘의 랭킹은 몇위인가?」를 처음으로 3일째.
이것은 귀찮습니다 ...

Qiita에 API가 있기 때문에 랭킹을 취할 수 있다고 랭킹 취득을 자동화하기로했습니다

API가 없다면 스크래핑!



Qiita에는 API가 있습니다. 여기 → Qiita API v2 사양
그러나 문서를 보더라도 Advent Calender API가 없습니다

API가 없다면 파이썬으로 스크래핑을 시도하기로 결정했습니다.Python スクレイピング에서 검색하면 Beautiful Soup이 많이 히트했기 때문에 Beautiful Soup을 사용하기로 결정했습니다.

스크래핑은 간단합니다.



목적은 명확합니다. 자신의 회사의 순위를 얻는 것입니다. HTML 태그를 조사해 보았습니다.



랭킹의 숫자를 취득하려면 , 캘린더 링크의 <a class="adventCalendarRankingListItem_calendarName"> 로부터 2개상에 올라 텍스트를 취득하면 좋을 것 같습니다.

BeautifulSoup을 사용하여 코드를 사용해 보았습니다.
from urllib import request
from bs4 import BeautifulSoup

targethref = '/advent-calendar/2019/fork'

def main():

    url = 'https://qiita.com/advent-calendar/2019/ranking/feedbacks/all'
    targetclass = 'adventCalendarRankingListItem_calendarName'

    response = request.urlopen(url)
    soup = BeautifulSoup(response,features="html.parser")
    ranking = soup.find('a',class_=targetclass,href=targethref).parent.parent.contents[0].text
    response.close()

    print(ranking)


if __name__ == "__main__":
    main()

이것뿐입니다, 매우 간단합니다!
BeautifulSoup 멋진! (스크래핑할 수 있는 다른 라이브러리를 모르기 때문에, 자신의 감각입니다)

좋아하는 캘린더의 순위를 얻으려면 네 번째 줄 targethref=을 다시 작성하십시오.

결론



이 로직을 AWS Lambda에 적용하여 하루에 한 번 실행합니다. 수행한 결과는 회사의 Chat 도구에 던져 정보를 공유하게 되었습니다.

API가 공개되지 않아도 스크래핑도 안 된다고 인식한 하루였습니다

FORK Advent Calendar 2019
내가 쓴 Advent Calender 기사는 여기입니다.

좋은 웹페이지 즐겨찾기