club21の掲示板一覧を取得する
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import codecs, sys db = [ ("http://metro21.com/cgi-bin/salon/vlist.cgi" ,'サロン・ド・メトロ'), ("http://club21.org/cgi-bin/topn/vlist.cgi" ,'トップノッチ1'), ("http://club21.org/cgi-bin/topn2/vlist.cgi" ,'トップノッチ2'), ("http://club21.org/cgi-bin/topn3/vlist.cgi" ,'トップノッチ3'), ("http://club21.org/cgi-bin/topn4/vlist.cgi" ,'トップノッチ4'), ("http://club21.org/cgi-bin/topn5/vlist.cgi" ,'トップノッチ5'), ("http://club21.org/cgi-bin/topn6/vlist.cgi" ,'トップノッチ6'), ("http://club21.org/cgi-bin/maison/vlist.cgi" ,'メゾン・ド・メトロ1'), ("http://club21.org/cgi-bin/maison2/vlist.cgi" ,'メゾン・ド・メトロ2'), ("http://club21.org/cgi-bin/maison3/vlist.cgi" ,'メゾン・ド・メトロ3'), ("http://club21.org/cgi-bin/maison4/vlist.cgi" ,'メゾン・ド・メトロ4'), ("http://club21.org/cgi-bin/maison5/vlist.cgi" ,'メゾン・ド・メトロ5'), ("http://club21.org/cgi-bin/maison6/vlist.cgi" ,'メゾン・ド・メトロ6'), ("http://club21.org/cgi-bin/maison7/vlist.cgi" ,'メゾン・ド・メトロ7'), ("http://club21.org/cgi-bin/maison8/vlist.cgi" ,'メゾン・ド・メトロ8'), ("http://metro21.com/cgi-bin/kiki/vlist.cgi" ,'メゾン・ド・キキ'), ("http://metro21.com/cgi-bin/mike/vlist.cgi" ,'メゾン・ド・ミケ'), ("http://metro21.com/cgi-bin/boo/vlist.cgi" ,'メゾン・ド・ぶー'), ("http://metro21.com/cgi-bin/pooh/vlist.cgi" ,'メゾン・ド・プー'), ("http://metro21.com/cgi-bin/pochi/vlist.cgi" ,'メゾン・ド・ポチ'), ("http://metro21.com/cgi-bin/pon/vlist.cgi" ,'メゾン・ド・ポン'), ("http://metro21.com/cgi-bin/leo/vlist.cgi" ,'メゾン・ド・レオ'), ("http://metro21.com/cgi-bin/kero/vlist.cgi" ,'メゾン・ド・ケロ'), ] import urllib.request import encodings import time def analys_url(url): with urllib.request.urlopen(url) as page: try: s = page.read() s = s.decode('shift-jis', 'ignore') except Exception as e: print("urllib error at: %s\n%s" % (url,e)) result = '' for i in filter(lambda a: a.startswith('<TD WIDTH="33%"'), s.split("\n")): l = i.split('<BR><a href="') try: bbs_num = l[0].split('<H3>')[1] bbs_name = l[1].split('">')[1].split('</a>')[0] bbs_url = url[:-9]+l[1].split('">')[0] #print(l) result += "<a href='%s' target='main'>%s</a><br>\n" % (bbs_url, bbs_name) except Exception as e: print("analys error at: %s\n%s\n" % (l, e)) return result html = """ <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <TITLE>club21 index</TITLE> <BASE TARGET="cont"> </HEAD> <BODY TEXT="#CC3300" BGCOLOR="#FFFFFF" link="#0000FF" alink="#ff0000" vlink="#660099"> <BR> <font size=2> %s <!-- <br>更新日14/08/12 --> </font> </BODY></HTML> """ result = '' for i in db: time.sleep(10) result += '<BR><BR><B>%s</B><BR>' % i[1] result += analys_url(i[0]) with open('c.html', 'w') as f: f.write( html%result )
2ch風のメニューにするのにframeを使う。書き方を忘れたので一応メモっておく
<html> <frameset cols="300,*"> <frame src="menu.html" name="menu"> <frame name="main"> </frameset> </html>