[PYTHON] Découvrez qui est un utilisateur favori de Hatena Bookmark et qui n'est plus actif

Utilisez-vous Hatena Bookmark? S'il s'agit d'un signet dur, je pense que la plupart d'entre eux vérifient les dernières informations de leurs pages préférées, mais si vous suivez près de 500 personnes, vous ne pourrez pas savoir quels utilisateurs ne sont plus actifs.

Je pense que c'est généralement une bonne idée d'utiliser le scraping pour connaître la date du dernier signet, mais les récents signets Hatena sont construits avec JavaScript, il est donc inutile de récupérer le HTML tel quel. Je me demandais ce qui s'était passé ... et quand je regardais l'historique des communications sur le réseau Google Chrome, j'ai trouvé une URL mystérieuse. Je vais l'essayer avec mon signet.

http://b.hatena.ne.jp/nisemono_san/fragment

Le but de ce HTML est un mystère, mais comme c'est du HTML qui a été craché sans utiliser de JavaScript pour le moment, vous pouvez l'utiliser pour connaître la date à laquelle vous avez marqué le dernier jour! Hyahoi! Ainsi, le script écrit est ci-dessous. Belle soupe requise.

python


# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import sys
import urllib


def _init():
    if len(sys.argv) == 1:
        print "usage: lastbookmark.py user_name"
        sys.exit(1)


def get_userlist():
    follow_users = []
    for page in range(3):
        html = urllib.urlopen(
            "http://b.hatena.ne.jp/%s/follow?of=%d" % (
                sys.argv[1], page * 200)).read()
        soup = BeautifulSoup(html)
        soup_userlist = soup.find_all('a', {'class': 'username'})
        follow_users += [userlist.text for userlist in soup_userlist]
    return follow_users


def get_last_bookmark(user):
    html = urllib.urlopen(
        "http://b.hatena.ne.jp/%s/fragment" % user).read()
    soup = BeautifulSoup(html)
    time = soup.find('span', {'class': 'timestamp'})
    print user, time.text
    return (user, time.text)


def target_user(analize_list):
    print "-----------------------------------"
    print "--- You should remove user list ---"
    print "-----------------------------------"
    for user, date in analize_list:
        date = date.split('/')
        if date[0] != "2013":
            print user, "/".join(date)


def command():
    _init()
    users = get_userlist()
    analize_list = []
    for user in users:
        analize_list.append((get_last_bookmark(user)))
    target_user(analize_list)

if __name__ == "__main__":
    command()

Comme prévu, les utilisateurs qui ne travaillent pas depuis un an peuvent le supprimer, voici donc l'implémentation. Si vous avez beaucoup d'utilisateurs dans vos favoris et que vous ne pouvez pas les maintenir, essayez ce script et vous découvrirez peut-être qui ne sont plus là.

Cependant, je dois à nouveau augmenter mes utilisateurs préférés ...

Recommended Posts

Découvrez qui est un utilisateur favori de Hatena Bookmark et qui n'est plus actif
Une histoire d'essayer pyenv, virtualenv et virtualenvwrapper