Python抓取優酷視頻(下):使用web.py搭建網站框架


承上: 

上篇已經將優酷視頻的鏈接地址采集到數據庫中,詳情看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。

 

效果:


主頁

內容頁

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM