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实现设置windows桌面壁纸代码分享
Mar 28 Python
python实现指定字符串补全空格的方法
Apr 30 Python
Python提取网页中超链接的方法
Sep 18 Python
Win10下Python环境搭建与配置教程
Nov 18 Python
python如何使用unittest测试接口
Apr 04 Python
Python地图绘制实操详解
Mar 04 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
python实现简单成绩录入系统
Sep 19 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
May 17 Python
如何打包Python Web项目实现免安装一键启动的方法
May 21 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 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
PHPMailer 中文使用说明小结
2010/01/22 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
PHP精确计算功能示例
2016/11/29 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
用js重建星际争霸
2006/12/22 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
Python实现的计数排序算法示例
2017/11/29 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
python根据多个文件名批量查找文件
2019/08/13 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
python3实现飞机大战
2020/11/29 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
2019年Java面试必问之经典试题
2012/09/12 面试题
工商管理专业实习生自我鉴定
2013/09/29 职场文书
行政助理工作职责范本
2014/03/04 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
实习单位指导教师评语
2014/12/30 职场文书
督导岗位职责
2015/02/04 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书