最近在实验室白天完全是不敢看dota视频,连dota视频网页都不敢打开,太显眼了,但是又想关注有没有精彩视频更新,怎么样才能在不打开网站的情况下知道视频情况呢?
想了想,还是尝试用python写个小助手。python以前只是简单的看过,小白阶段。但是python上手确实太快了。下面就是刚才利用2个小时写的脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import urllib import re
def dotareplay(url): content = urllib.urlopen(url).read() content = content.decode('utf-8') matchtitle = re.findall(u'<li class="v_title"><a href=".*" charset="100344-18935-[1-9]-2" target="video" title=".*">', content) if matchtitle: for eachtitle in matchtitle: findeachtitle=re.search('<li class="v_title"><a href="(.*)" charset="100344-18935-[1-9]-2" target="video" title="(.*)">', eachtitle) print findeachtitle.group(2) print findeachtitle.group(1)
def main(): dotareplay('http://game.youku.com/')
if __name__ == '__main__': main()
|
涉及到的知识有HTML基础知道,python的web解析,以及正则表达式
想法很简单,用chrome打开任何一个网页,右键->审查元素,我们就可以看到各种html标签,然后我们对html进行解码,解码之后就可以进行正则匹配。关于正则表达式唯一要说的是re.search()和re.findall的区别。re.search()只要匹配到就返回,也就是有且仅返回第一个匹配对象,而re.findall()是返回所有的匹配到的对象,存在序列中。我们只需要知道提取title信息,所以涉及到一个操作就是:将re.findall()得到的序列逐一用re.search()进行处理,这是又有一个group的概念,就是匹配pattern中有括号的部分,且第一项索引为1.对应到上例程序就是title是group(1), href是group(2)。
执行结果如下
有些人可以只对某些解说感兴趣,那我们只要稍作修改对解说的优酷空间进行监测就行了
下面是对大酒神的空间的关注,关注是视频子目录下的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import urllib import re
def dotareplay(url): content = urllib.urlopen(url).read() content = content.decode('utf-8') matchtitle = re.findall(u'<li class="v_title"><a _hz="l_v_title" title=".*" target="video" href=".*">', content) if matchtitle: for eachtitle in matchtitle: findeachtitle=re.search('<li class="v_title"><a _hz="l_v_title" title="(.*)" target="video" href="(.*)">', eachtitle) print(findeachtitle.group(1)) print(findeachtitle.group(2))
def main(): dotareplay('http://i.youku.com/u/UMzE2OTY2NjUy/videos')
if __name__ == '__main__': main()
|