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编写类UNIX系统的命令行工具的教程
Apr 15 Python
python开发简易版在线音乐播放器
Mar 03 Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 Python
浅谈python中字典append 到list 后值的改变问题
May 04 Python
python读写配置文件操作示例
Jul 03 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
pandas数据拼接的实现示例
Apr 16 Python
浅析Python 条件控制语句
Jul 15 Python
python UIAutomator2使用超详细教程
Feb 19 Python
Python实现byte转integer
Jun 03 Python
Python中seaborn库之countplot的数据可视化使用
Jun 11 Python
python实现会员信息管理系统(List)
Mar 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
thinkphp实现数组分页示例
2014/04/13 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
Python重新加载模块的实现方法
2018/10/16 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
wxPython实现画图板
2020/08/27 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
用python计算文件的MD5值
2020/12/23 Python
python中if嵌套命令实例讲解
2021/02/25 Python
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
销售工作人员的自我评价分享
2013/11/10 职场文书
经理管理专业自荐信范文
2013/12/31 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
诚信承诺书
2015/01/19 职场文书
安全员岗位职责
2015/02/10 职场文书
区域销售大会开幕词
2016/03/04 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
numpy数据类型dtype转换实现
2021/04/24 Python