码迷,mamicode.com
首页 > 编程语言 > 详细

[搬运自我的CSDN博客] python抓取javascript动态生成HTML内容的实践

时间:2015-10-14 23:51:30      阅读:443      评论:0      收藏:0      [点我收藏+]

标签:

<注:CSDN博客在美国访问特别卡,所以转移到cnblogs来发文章>

本实验在Ubuntu14.04上完成。使用的浏览器是火狐(Firefox 33.0),python版本是2.7.6。

大家都知道用urllib配合正则表达式抓取静态HTML的内容很方便,但是如果网页中有javascript动态生成的内容,urllib就无能为力了。

此时我们要借助一个额外的工具:selenium。它的工作原理是操纵(火狐)浏览器浏览目标网页,等待网页中的javascript全部执行完毕后再对HTML源码进行操作。整个过程就好像是人工操作浏览器转到目标网址查看源代码一样。

从selenium的官网下载selenium-server-standalone-2.44.0.jar。为了大家方便我已经传到了网盘上。下载后设置一下文件的权限:

$ chmod 664 selenium-server-standalone-2.44.0.jar

然后,安装python的selenium工具包:

$ pip install -U selenium

准备工作就绪了,下面开始测试一下这套系统。首先运行起selenium的server:

$ sudo java -jar selenium-server-standalone-2.44.0.jar 

注意,整个命令会在输出了几行信息后就不动了。这不是卡死,而是server已经做好准备,等待python脚本的调用。所以这个窗口就不要动了。

开个新窗口执行python脚本:

$ python skk.py

skk.py的内容如下:

 1 #!/usr/bin/python
 2 from selenium import selenium
 3 
 4 def selenium_init(browser,url,para):
 5     sel = selenium(localhost, 4444, browser, url)
 6     sel.start()
 7     sel.open(para)
 8     sel.set_timeout(60000)
 9     sel.window_focus()
10     #sel.window_maximize()
11     return sel     
12 
13 if __name__ =="__main__" :
14     browser=*firefox
15     html=‘‘
16     sel1=selenium_init(browser,http://music.baidu.com,/top)
17     try:
18         html=sel1.get_html_source()
19     finally:
20         sel1.stop()
21         print html

在脚本执行的过程中,火狐浏览器会弹出来跳动一番,就好像人工操作浏览器看网页一样。不要理它,最后浏览器窗口会自动关掉。

脚本最终打印出http://music.baidu.com/top的HTML源码,存在字符串变量html中。读者可以继续用正则表达式从“html”中获取数据。

关于selenium的python接口的更多用法,可以参考官方文档:http://selenium.googlecode.com/git/docs/api/py/api.html

[搬运自我的CSDN博客] python抓取javascript动态生成HTML内容的实践

标签:

原文地址:http://www.cnblogs.com/mw2972/p/4881076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!