[PYTHON] Finden Sie heraus, wer ein Lieblingsbenutzer von Hatena Bookmark ist und nicht mehr aktiv ist

Verwenden Sie Hatena Bookmark? Wenn es sich um einen Hard-End-Lesezeichen handelt, überprüfen die meisten von ihnen die neuesten Informationen auf ihren Lieblingsseiten. Wenn Sie jedoch fast 500 Personen folgen, können Sie nicht feststellen, welche Benutzer nicht mehr aktiv sind.

Ich denke, es ist normalerweise eine gute Idee, das Datum des letzten Lesezeichens mithilfe von Scraping herauszufinden, aber die neuesten Hatena-Lesezeichen werden mit JavaScript erstellt, sodass es keinen Sinn macht, den HTML-Code so wie er ist abzurufen. Ich habe mich gefragt, was passiert ist ... und als ich mir den Kommunikationsverlauf im Google Chrome-Netzwerk angesehen habe, habe ich eine mysteriöse URL gefunden. Ich werde es mit meinem Lesezeichen versuchen.

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

Es ist ein Rätsel, für welchen Zweck dieser HTML-Code verwendet wird. Da es sich jedoch um HTML handelt, das vorerst ohne JavaScript ausgespuckt wurde, können Sie damit das Datum ermitteln, an dem Sie am letzten Tag ein Lesezeichen gesetzt haben. Hyahoi! Das geschriebene Skript ist also unten. Schöne Suppe erforderlich.

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()

Wie erwartet können Benutzer, die seit einem Jahr nicht mehr gearbeitet haben, es entfernen. Dies ist also die Implementierung. Wenn Sie viele Benutzer in Ihren Favoriten haben und diese nicht pflegen können, probieren Sie dieses Skript aus und finden Sie heraus, wer nicht mehr da ist.

Allerdings muss ich meine Lieblingsnutzer wieder erhöhen ...

Recommended Posts

Finden Sie heraus, wer ein Lieblingsbenutzer von Hatena Bookmark ist und nicht mehr aktiv ist
Eine Geschichte über das Ausprobieren von pyenv, virtualenv und virtualenvwrapper