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中使用HTMLParser解析HTML的教程
Apr 29 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
Python进行数据提取的方法总结
Aug 22 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
Python3.6连接Oracle数据库的方法详解
May 18 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
Python with标签使用方法解析
Jan 17 Python
Python中的sys.stdout.write实现打印刷新功能
Feb 21 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
Apr 10 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 Python
Python turtle实现贪吃蛇游戏
Jun 18 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
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
PHP7新功能总结
2019/04/14 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
2019/09/09 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
Python中的面向对象编程详解(上)
2015/04/13 Python
Python中内建函数的简单用法说明
2016/05/05 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
国际贸易专业推荐信
2013/11/15 职场文书
商超业务员岗位职责
2014/03/12 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
房屋维修申请报告
2015/05/18 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis