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 相关文章推荐
DJANGO-ALLAUTH社交用户系统的安装配置
Nov 18 Python
python目录与文件名操作例子
Aug 28 Python
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 Python
python中的插值 scipy-interp的实现代码
Jul 23 Python
python实现一个简单的udp通信的示例代码
Feb 01 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
python cv2在验证码识别中应用实例解析
Dec 25 Python
Python进阶之迭代器与迭代器切片教程
Jan 29 Python
pytorch MSELoss计算平均的实现方法
May 12 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
php中file_exists函数使用详解
2015/05/08 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
2016/10/13 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
javascript简单性能问题及学习笔记
2014/02/04 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
vue生命周期的探索
2019/04/03 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
python实现傅里叶级数展开的实现
2018/07/21 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
初中地理教学反思
2014/01/11 职场文书
战略合作协议书范本
2014/04/18 职场文书
绘画专业自荐信
2014/07/04 职场文书
道德与公民自我评价
2015/03/09 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers