承上:
上篇已經將優酷視頻的鏈接地址采集到數據庫中,詳情看Python抓取優酷視頻(上):爬蟲使用及數據處理,這里稍微啰嗦幾句,采集的其實就是單獨視頻播放
的頁面地址,而不是flash地址,因此不用做地址解析。接下去任務就是搭建一個網站列表頁。
思路:
1.采用web.py搭建網站框架,Django太大,web.py上手快。
2.主頁面采用列表頁,顯示title和date
3.采用分頁處理,每頁10個視頻連接
代碼:
代碼結構:
web_by:
code.py
template:
index.html
code.py
1 import web 2 import MySQLdb 3 4 db = web.database(dbn='mysql',user='root',pw='root',db='python_test') #連接數據庫 5 render = web.template.render('templates/') #模板路徑 6 urls = ( #url設置 7 '/','index', 8 '/page/(\d+)','index' 9 ) 10 11 class index: 12 def GET(self,page=1): #分頁函數 13 page = int(page) 14 perpage = 10 15 offset = (page-1)*perpage 16 posts = db.select('ykgame',order="date DESC",offset=offset, 17 limit=perpage) 18 postcount = db.query('select count(*) as count from ykgame')[0] 19 pages = postcount.count / perpage 20 if postcount.count % perpage > 0: 21 pages += 1 22 if page > pages: 23 raise web.seeother('/') 24 else: 25 return render.index(posts=posts,pages=pages) 26 27 if __name__ == "__main__": 28 app = web.application(urls,globals()) 29 app.run()
index.html
1 $def with (posts,pages) 2 <ul> 3 $for post in posts: 4 <li id= "t$post.id"><a href="$post.href">$post.title</a> $post.date</li> 5 </ul> 6 7 $for page in range(1,pages+1): 8 <a href="/page/$page">$page</a>
代碼比較簡單就不做分析了,存在的問題是現未按時間順序排序,原因在於優酷的時間除了日期格式還有比如1小時前等字符,
而采集的時候因為是多線程采集導致沒按時間順序入庫。解決辦法就是做個時間轉換,然后order by date。
效果:
主頁

內容頁

