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中函数的调用与定义
Mar 14 Python
python使用代理ip访问网站的实例
May 07 Python
python实现录音小程序
Oct 26 Python
python面向对象实现名片管理系统文件版
Apr 26 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Python笔试面试题小结
Sep 07 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
用什么库写 Python 命令行程序(示例代码详解)
Feb 20 Python
Python基于time模块表示时间常用方法
Jun 18 Python
Python 如何实现访问者模式
Jul 28 Python
python之基数排序的实现
Jul 26 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 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验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
详解JSON Web Token 入门教程
2018/07/30 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
python实现决策树ID3算法的示例代码
2018/05/30 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
Python中如何导入类示例详解
2019/04/17 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
企业管理专业个人求职信范文
2013/09/24 职场文书
行政办公员自我评价分享
2013/12/14 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
2015教师年度考核评语
2015/03/25 职场文书
婚庆答谢词大全
2015/09/29 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
MySQL触发器的使用
2021/05/24 MySQL
MySQL的Query Cache图文详解
2021/07/01 MySQL