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创建一个最简单http webserver服务器的方法
May 08 Python
Python中的ctime()方法使用教程
May 22 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
Python enumerate索引迭代代码解析
Jan 19 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
python代理工具mitmproxy使用指南
Jul 04 Python
python搜索包的路径的实现方法
Jul 19 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
解析php中call_user_func_array的作用
2013/06/07 PHP
php绘制一条直线的方法
2015/01/24 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
很可爱的输入框
2008/08/03 Javascript
javascript 鼠标拖动图标技术
2010/02/07 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
Python yield 小结和实例
2014/04/25 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
Python读取实时数据流示例
2019/12/02 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
python中PyQuery库用法分享
2021/01/15 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
本科生的职业生涯规划范文
2014/01/09 职场文书
2015年企业新年寄语
2014/12/08 职场文书
营运督导岗位职责
2015/04/10 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang