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使用chardet判断字符串编码的方法
Mar 13 Python
Python中的filter()函数的用法
Apr 27 Python
举例讲解Python的Tornado框架实现数据可视化的教程
May 02 Python
以windows service方式运行Python程序的方法
Jun 03 Python
bat和python批量重命名文件的实现代码
May 19 Python
Python多线程原理与用法详解
Aug 20 Python
Python读写文件基础知识点
Jun 10 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
细说NumPy数组的四种乘法的使用
Dec 18 Python
python基于opencv 实现图像时钟
Jan 04 Python
python源文件的字符编码知识点详解
Mar 04 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设计模式之装饰者模式
2012/02/29 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
prototype 中文参数乱码解决方案
2009/11/09 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
超强台风观后感
2015/06/09 职场文书
婚育证明格式
2015/06/17 职场文书
初二数学教学反思
2016/02/17 职场文书