Python3抓取javascript生成的html网页-阿里云开发者社区

开发者社区> 罗兵> 正文

Python3抓取javascript生成的html网页

简介: 用urllib等抓取网页,只能读取网页的静态源文件,而抓不到由javascript生成的内容。 究其原因,是因为urllib是瞬时抓取,它不会等javascript的加载延迟,所以页面中由javascript生成的内容,urllib读取不到。
+关注继续查看

用urllib等抓取网页,只能读取网页的静态源文件,而抓不到由javascript生成的内容。

究其原因,是因为urllib是瞬时抓取,它不会等javascript的加载延迟,所以页面中由javascript生成的内容,urllib读取不到。

 

那由javascript生成的内容就真的没有办法读取了吗?非也!

本文要介绍一个python库:selenium,目前最新版本是 2.44.0

 

先安装:

pip install -U selenium

 

下面用三个例子来说明其用法:

【例0】

  • 打开一个Firefox浏览器
  • 载入所给url地址的页面
1 from selenium import webdriver
2 
3 browser = webdriver.Firefox()
4 browser.get('http://www.baidu.com/')

 

【例1】

  • 打开一个Firefox浏览器
  • 载入百度主页
  • 搜索 “seleniumhq”
  • 关闭浏览器
 1 from selenium import webdriver
 2 from selenium.webdriver.common.keys import Keys
 3 
 4 browser = webdriver.Firefox()
 5 
 6 browser.get('http://www.baidu.com')
 7 assert '百度' in browser.title
 8 
 9 elem = browser.find_element_by_name('p')  # Find the search box
10 elem.send_keys('seleniumhq' + Keys.RETURN)  # 模拟按键
11 
12 browser.quit()

 

【例2】

Selenium WebDriver 常用于网络程序的测试。 下面是一个使用Python标准库 unittest 的例子:

 1 import unittest
 2 
 3 class BaiduTestCase(unittest.TestCase):
 4 
 5     def setUp(self):
 6         self.browser = webdriver.Firefox()
 7         self.addCleanup(self.browser.quit)
 8 
 9     def testPageTitle(self):
10         self.browser.get('http://www.baidu.com')
11         self.assertIn('百度', self.browser.title)
12 
13 if __name__ == '__main__':
14     unittest.main(verbosity=2)

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
手把手教你生成对抗网络 GAN,50 行代码玩转 GAN 模型!
本文为大家介绍了生成对抗网络(Generate Adversarial Network,GAN),以最直白的语言来讲解它,最后实现一个简单的 GAN 程序来帮助大家加深理解。
1621 0
《HTML5+CSS3网页设计入门必读》——导读
网页设计是基于标准的。虽然“real fonts”或CSS3也对网页设计产生了深远的影响,但HTML的影响是其他方面所无法比拟的。HTML是开发人员对W3C步调和政策不满的结果,它是为网页应用程序(而不仅仅是文件)而设计的,因此,虽然这个新版本的网络语言令网页设计界为之兴奋,但也导致了同等程度的愤怒
1665 0
python3中的迭代器与生成器
迭代器(iterator) def add(s, x): return s + x def gen(): for i in range(4): yield i base = gen() for n in [1, 10]: base = (add(i, n) for i in base) print list(base) 这个东西输出可以脑补一下, 结果是[20,21,22,23], 而不是[10, 11, 12, 13]。
772 0
《HTML CSS JavaScript 网页制作从入门到精通 第3版》—— 导读
十多年前,Internet在国内开始流行。其中,网页作为互联网的主要媒介受到了电脑爱好者的广泛关注。由于当时网速的限制,网页主要承载文本、图片等简单数据,使用Dreamweaver或Frontpage软件即可轻松制作网页。
1185 0
网页调试:myeclipse修改javascript代码后,执行没有变化呀
SSH做网页,有时候修改了javascript的代码,执行没有生效啊。最后用“IE浏览器自带的调试网页功能"发现还是javascript的问题。 1.查找问题的方法:   1.如果改了配置文件。执行的时候,一定要重启Tomcat服务器。
760 0
分享几款Flash和Javascript网页视频播放器,不过我钟爱JCPlayer
分享几款Flash和javascript网页视频播放器。梦想中的视频播放器是这样的: 支持所有格式,兼容所有主流视频网站,支持播放列表、视频缩略图、全屏播放、画面调节、预加载、体积贼小,功能贼多……. 也许你的要求并没有这么高,找找下面有没有你满意的! 不过我钟爱JCPlayer,JCPlayer在官网下载太麻烦了,所以艾伟给大家共享了网盘,地址是:http://www.kuaipan.cn/index.php?ac=file&oid=21574733124337668 1. Videobox Videobox是一个只有6k大小的脚本,用于在页面中显示视频。
1159 0
+关注
罗兵
数学专业。擅数据分析,涉stock、lotto。了解随机过程分析、神经网络。涉web前端、后端。了解vba、js,稍擅python
251
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载