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 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
Python自定义线程类简单示例
Mar 23 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
将python依赖包打包成window下可执行文件bat方式
Dec 26 Python
python 的topk算法实例
Apr 02 Python
numpy中生成随机数的几种常用函数(小结)
Aug 18 Python
Python 3.9的到来到底是意味着什么
Oct 14 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
Jan 12 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 Python
Python Django获取URL中的数据详解
Nov 01 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
让PHP支持页面回退的两种方法[转]
2007/02/14 PHP
微信API接口大全
2015/04/15 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
iview实现图片上传功能
2020/06/29 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
用python代码做configure文件
2014/07/20 Python
python生成随机密码或随机字符串的方法
2015/07/03 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
python使用turtle库绘制时钟
2020/03/25 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
django数据库自动重连的方法实例
2019/07/21 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
Python 实现进度条的六种方式
2021/01/06 Python
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
2014年班主任自我评价范文
2014/04/23 职场文书
班级出游活动计划书
2014/08/15 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
高中美术教学反思
2016/02/17 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python
Python中文纠错的简单实现
2021/07/07 Python