python抓取javascript动态生成HTML内容的实践
来源:互联网 发布:手机游戏充值端口代理 编辑:程序博客网 时间:2024/05/01 12:38
本实验在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的内容如下:
#!/usr/bin/pythonfrom selenium import seleniumdef selenium_init(browser,url,para): sel = selenium('localhost', 4444, browser, url) sel.start() sel.open(para) sel.set_timeout(60000) sel.window_focus() #sel.window_maximize() return sel if __name__ =="__main__" : browser='*firefox' html='' sel1=selenium_init(browser,'http://music.baidu.com','/top') try: html=sel1.get_html_source() finally: sel1.stop() print html在脚本执行的过程中,火狐浏览器会弹出来跳动一番,就好像人工操作浏览器看网页一样。不要理它,最后浏览器窗口会自动关掉。
脚本最终打印出http://music.baidu.com/top的HTML源码,存在字符串变量html中。读者可以继续用正则表达式从“html”中获取数据。
关于selenium的python接口的更多用法,可以参考官方文档:http://selenium.googlecode.com/git/docs/api/py/api.html
- python抓取javascript动态生成HTML内容的实践
- Python抓取html内容
- python爬虫-->抓取动态内容
- 查看js动态生成的HTML内容
- Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
- 动态生成Html页面内容
- JavaScript动态创建Html内容
- javascript动态创建html内容
- [python]抓取网页的内容
- HTML中动态生成内容的事件绑定问题
- HTML中动态生成内容的事件绑定问题
- HTML中动态生成内容的事件绑定问题
- python抓取网页的html
- c# 抓取 js动态生成的HTML的工具:NHtmlUnit
- 7、抓取动态网页的数据内容
- 使用原生javascript生成html内容
- javascript动态修改html页面内容
- python解析网页中javascript动态添加的内容 一
- UVA - 514 Rails
- 黑马程序员-java 集合框架
- Java中的字符串操作
- 【BZOJ】【P2434】【Noi2011】【阿狸的打字机】【题解】【fail树+dfs序+树状数组】
- UVA - 10369 Arctic Network kruskal算法
- python抓取javascript动态生成HTML内容的实践
- 计算机专业术语总结
- 如何在11gR2 RAC上配置GoldenGate
- String的案例
- 【UNIX】认识iner-net网际网以及网络编程
- UVA - 10099 The Tourist Guide kruskal算法
- 限制文件下载时上传速度
- C语言
- 路由器和猫,集线器,交换机的区别