您的位置:首页 > 编程语言 > Python开发

Python抓取优酷视频(下):使用web.py搭建网站框架

2012-09-18 09:01 851 查看
承上: 

上篇已经将优酷视频的链接地址采集到数据库中,详情看Python抓取优酷视频(上):爬虫使用及数据处理,这里稍微啰嗦几句,采集的其实就是单独视频播放

的页面地址,而不是flash地址,因此不用做地址解析。接下去任务就是搭建一个网站列表页。

思路:

1.采用web.py搭建网站框架,Django太大,web.py上手快。

2.主页面采用列表页,显示title和date

3.采用分页处理,每页10个视频连接

代码:

代码结构:

web_by:

  code.py

  template:

    index.html

code.py

import web
import MySQLdb

db = web.database(dbn='mysql',user='root',pw='root',db='python_test')       #连接数据库
render = web.template.render('templates/')                                  #模板路径
urls = (                                                                    #url设置
'/','index',
'/page/(\d+)','index'
)

class index:
def GET(self,page=1):                                                   #分页函数
page = int(page)
perpage = 10
offset = (page-1)*perpage
posts = db.select('ykgame',order="date DESC",offset=offset,
limit=perpage)
postcount = db.query('select count(*) as count from ykgame')[0]
pages = postcount.count / perpage
if postcount.count % perpage > 0:
pages += 1
if page > pages:
raise web.seeother('/')
else:
return render.index(posts=posts,pages=pages)

if __name__ == "__main__":
app = web.application(urls,globals())
app.run()


index.html

$def with (posts,pages)
<ul>
$for post in posts:
<li id= "t$post.id"><a href="$post.href">$post.title</a>  $post.date</li>
</ul>

$for page in range(1,pages+1):
<a href="/page/$page">$page</a>


代码比较简单就不做分析了,存在的问题是现未按时间顺序排序,原因在于优酷的时间除了日期格式还有比如1小时前等字符,

而采集的时候因为是多线程采集导致没按时间顺序入库。解决办法就是做个时间转换,然后order by date。

效果:

主页



内容页

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: