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无损音乐搜索引擎实现代码
Feb 02 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
python3实现带多张图片、附件的邮件发送
Aug 10 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
win10从零安装配置pytorch全过程图文详解
May 08 Python
Python文件操作模拟用户登陆代码实例
Jun 09 Python
Python 远程开关机的方法
Nov 18 Python
python利用appium实现手机APP自动化的示例
Jan 26 Python
Python中for后接else的语法使用
May 18 Python
python 经纬度求两点距离、三点面积操作
Jun 03 Python
总结Pyinstaller打包的高级用法
Jun 28 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
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
8个实用的jQuery技巧
2014/03/04 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
Python代码解决RenderView窗口not found问题
2016/08/28 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
Python 一句话生成字母表的方法
2019/01/02 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
python3 配置logging日志类的操作
2020/04/08 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
生态学毕业生自荐信
2013/10/27 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
精神文明单位申报材料
2014/05/02 职场文书
质量承诺书格式
2014/05/20 职场文书
个人年终总结范文
2015/03/09 职场文书
求职简历自我评价2015
2015/03/10 职场文书
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL