博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3抓取javascript生成的html网页
阅读量:6695 次
发布时间:2019-06-25

本文共 1192 字,大约阅读时间需要 3 分钟。

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

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

 

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

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

 

先安装:

pip install -U selenium

 

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

【例0】

  • 打开一个Firefox浏览器
  • 载入所给url地址的页面
1 from selenium import webdriver2 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 box10 elem.send_keys('seleniumhq' + Keys.RETURN)  # 模拟按键11 12 browser.quit()

 

【例2】

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

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)

 

转载地址:http://gtjoo.baihongyu.com/

你可能感兴趣的文章
Anaconda不同envs的pip和python的版本
查看>>
深度学习与神经网络:最值得关注的6大趋势
查看>>
给SUBVERSION-EDGE和GITLAB-CE增加多LDAP域认证支持的经历
查看>>
SQLServer之创建全文索引
查看>>
如何以并发方式在同一个流上执行多种操作?--复制流
查看>>
Spring Boot 参考指南(开发Web应用程序)
查看>>
策略模式总结
查看>>
关于作用域插槽的理解
查看>>
javascript块级作用域处理闭包和释放内存的垃圾回收
查看>>
快速入门React
查看>>
正则表达式语法入门
查看>>
关于顶级、一级、二级域名如何理解?
查看>>
为什么点积等价于投影后的乘积?
查看>>
关于pug的笔记
查看>>
系统优化怎么做-Linux系统配置优化
查看>>
encodeuricomponent VS encodeuri
查看>>
xxl-job之调度中心启动源码分析(一)
查看>>
微信公众号开发Django-JSSDK授权
查看>>
刘连响:小程序实时音视频在互动场景下的应用
查看>>
【跃迁之路】【517天】程序员高效学习方法论探索系列(实验阶段274-2018.07.07)...
查看>>