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统计文本字符串里单词出现频率的方法
May 26 Python
Python在Console下显示文本进度条的方法
Feb 14 Python
Python程序退出方式小结
Dec 09 Python
mac PyCharm添加Python解释器及添加package路径的方法
Oct 29 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
Python Lambda函数使用总结详解
Dec 11 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
Python虚拟环境venv用法详解
May 25 Python
django的autoreload机制实现
Jun 03 Python
Python基于os.environ从windows获取环境变量
Jun 09 Python
python如何查找列表中元素的位置
May 30 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
多文件上传的例子
2006/10/09 PHP
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
自制PHP框架之设计模式
2017/05/07 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
lib.utf.js
2007/08/21 Javascript
js select option对象小结
2013/12/20 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python导出hive数据表的schema实例代码
2018/01/22 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
优秀的毕业生的自我评价
2013/12/12 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
普通党员整改措施
2014/10/24 职场文书
2014年电工工作总结
2014/11/20 职场文书
小学优秀教师材料
2014/12/15 职场文书
硕士学位论文评语
2014/12/31 职场文书
幸福终点站观后感
2015/06/04 职场文书
退休欢送会主持词
2015/07/01 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis