Python3实现抓取javascript动态生成的html网页功能示例


Posted in Python onAugust 22, 2017

本文实例讲述了Python3实现抓取javascript动态生成的html网页功能。分享给大家供大家参考,具体如下:

用urllib等抓取网页,只能读取网页的静态源文件,而抓不到由javascript生成的内容。

究其原因,是因为urllib是瞬时抓取,它不会等javascript的加载延迟,所以页面中由javascript生成的内容,urllib读取不到。

那由javascript生成的内容就真的没有办法读取了吗?非也!

这里要介绍一个python库:selenium,本文使用的版本是 2.44.0

先安装:

pip install -U selenium

下面用三个例子来说明其用法:

【例0】

打开一个Firefox浏览器
载入所给url地址的页面

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://www.baidu.com/')

【例1】

打开一个Firefox浏览器
载入百度主页
搜索 “seleniumhq”
关闭浏览器

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get('http://www.baidu.com')
assert '百度' in browser.title
elem = browser.find_element_by_name('p') # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN) # 模拟按键
browser.quit()

【例2】

Selenium WebDriver 常用于网络程序的测试。 下面是一个使用Python标准库 unittest 的例子:

import unittest
class BaiduTestCase(unittest.TestCase):
  def setUp(self):
    self.browser = webdriver.Firefox()
    self.addCleanup(self.browser.quit)
  def testPageTitle(self):
    self.browser.get('http://www.baidu.com')
    self.assertIn('百度', self.browser.title)
if __name__ == '__main__':
  unittest.main(verbosity=2)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
使用Python中的greenlet包实现并发编程的入门教程
Apr 16 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
在Python程序中操作MySQL的基本方法
Jul 29 Python
不要用强制方法杀掉python线程
Feb 26 Python
利用Django内置的认证视图实现用户密码重置功能详解
Nov 24 Python
Python实现随机漫步功能
Jul 09 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
Python程序包的构建和发布过程示例详解
Jun 09 Python
django框架防止XSS注入的方法分析
Jun 21 Python
如何通过50行Python代码获取公众号全部文章
Jul 12 Python
PyQt5使用QTimer实现电子时钟
Jul 29 Python
Python 数据可视化之Bokeh详解
Nov 02 Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 #Python
Python实现的矩阵类实例
Aug 22 #Python
Python实现图片转字符画的示例
Aug 22 #Python
利用aardio给python编写图形界面
Aug 21 #Python
Python实现图片转字符画的示例代码
Aug 21 #Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 #Python
Python编程实现微信企业号文本消息推送功能示例
Aug 21 #Python
You might like
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
PHP代码优化的53个细节
2014/03/03 PHP
轻松实现php文件上传功能
2017/02/17 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
python快速排序代码实例
2013/11/21 Python
深入理解Python装饰器
2016/07/27 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
简单谈谈python基本数据类型
2018/09/26 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
Django ModelForm操作及验证方式
2020/03/30 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
医学专业个人求职自荐信格式
2013/09/23 职场文书
小学节能减排倡议书
2014/05/15 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
升职自荐信怎么写
2015/03/05 职场文书
交心谈心活动总结
2015/05/11 职场文书
新课程改革心得体会
2016/01/22 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书