以前作ってた三日はてブの動く版w
絵文字は消える。文字コード昔仕事で使ったのによくわからんw
スター付けたかどうかのところは今のところとれなくなってる。
よって「はてなID」は何入れても同じ罠w
日付でソートしようと思ったらドはまりしそうなので、ひとまずここで上げておく
# -*- coding:utf-8 -*- import urllib import codecs import requests import json from lxml import etree import datetime as dt def HtmlOutput(bmInfos): #ファイルを開く f = open('被はてブlist.html', 'wt') #最低限のタグ書き込み f.write('<html><body><table border="1" style="border-collapse: collapse">') #ヘッダ f.write('<tr><th>★</th><th>URL</th><th>ユーザー</th><th>日付</th><th>コメント</th>\n') #ノードごとに書き込む for b in bmInfos: bUrl = b['url'].replace("http://", "") bUrl = b['url'].replace("https://", "s/") bUrl = urllib.parse.quote(bUrl) f.write('<tr>') f.write('<td>') if b['star']==1: f.write('★') f.write('</td>') try: f.write('<td><a href="http://b.hatena.ne.jp/entry/' + bUrl + '" target="_blank">' + b['url'] + '</a></td><td>' + \ b['user'] + '</td><td>' + b['date'].strftime("%Y/%m/%d") + '</td><td>' + b['comment'] + '</td>') except: #絵文字があったらどうにかする(消える) s = '<td><a href="http://b.hatena.ne.jp/entry/' + bUrl + '" target="_blank">' + b['url'] + '</a></td><td>' + \ b['user'] + '</td><td>' + b['date'].strftime("%Y/%m/%d") + '</td><td>' + b['comment'] + '</td>' b = s.encode('cp932', "ignore") f.write(b.decode('cp932')) f.write('</tr>\n') #後処理 f.write('</table></body></html>') f.close() #####死んどる##### def GetImgIndex(time, eid, user): #URL作成 url = "http://b.hatena.ne.jp/entry/" + str(eid) + "/comment/" url = url + user url = urllib.parse.quote(url) headers = {'User-Agent': 'Sample Header'} r = requests.get("http://s.hatena.com/entry.json?uri=" + url, headers=headers).json() for st in r['entries']: for st2 in st['stars']: if st2['name'] == myId: return 1 return 0 ########################################## #検索したいurl: myStr="https://elve.hatenadiary.jp/" #あなたのはてなID myId = "elve" #大元のURL読み込み(はてブをURLで検索した結果)rss表示 r = requests.get("http://b.hatena.ne.jp/search/text?safe=off&q=" + urllib.parse.quote(myStr) + "&users=1&mode=rss").text r = r.encode('utf-8') root = etree.fromstring(r) #各記事のノードの束取得 links = root.findall(".//{http://purl.org/rss/1.0/}link") #データ空に bmInfos = [] #ノードごとに処理 for link in links: if link != links[0]: #適当にヘッダ設定 headers = {'User-Agent': 'Sample Header'} #各記事のブクマページ取得 json = requests.get("http://b.hatena.ne.jp/entry/jsonlite/?url=" + link.text, headers=headers).json() try: #ブクマごとの処理 for bm in json['bookmarks']: #タイムスタンプ tdatetime = dt.datetime.strptime(bm['timestamp'], '%Y/%m/%d %H:%M') #スターなし(現在機能していない)|ブクマページURL|ユーザー名|日付|コメント bmInfo={"star":0,"url":json['url'],"user":bm['user'], "date":tdatetime,"comment":bm['comment']} #死んどる #bmInfo["star"] = GetImgIndex(tdatetime, json['eid'], bm['user']) #データ追加 bmInfos.append(bmInfo) except: #不穏な動き print("ERR!!") break #データをHTMLに出力 HtmlOutput(bmInfos) print("END")
出力