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)

 

目录
相关文章
|
5月前
|
数据采集 JavaScript 前端开发
Go和JavaScript结合使用:抓取网页中的图像链接
Go和JavaScript结合使用:抓取网页中的图像链接
|
6月前
|
数据采集 JavaScript 前端开发
Javascript抓取京东、淘宝商品数据
随着互联网的发展,越来越多的商品信息被发布在各大电商平台上,如京东、淘宝等。这些平台上的商品信息对于消费者来说是非常重要的,可以帮助他们了解商品的价格、详情和评价等信息。而对于商家来说,了解竞争对手的商品信息也是至关重要的。因此,抓取京东、淘宝商品数据成为了一种常见的需求。本文将介绍如何使用JavaScript来抓取京东、淘宝的商品数据。
|
8月前
|
数据采集 JavaScript API
Python爬虫抓取经过JS加密的API数据的实现步骤
Python爬虫抓取经过JS加密的API数据的实现步骤
|
存储 分布式计算 JavaScript
抓取牛客最新前端面试题五百道 数据分析JS面试热点
抓取牛客最新前端面试题五百道 数据分析JS面试热点
315 0
抓取牛客最新前端面试题五百道 数据分析JS面试热点
|
前端开发 JavaScript 搜索推荐
谷歌启用抓取JavaScript,应对方案!
谷歌启用了抓取JavaScript来深入了解网站,这样,如果网站或黑页是加了跳转代码或判断代码,很有可能将会被识别出来。虽然目前只是谷歌启用识别JavaScript文件,但国内搜索引擎很可能也会跟着模仿,毕竟一直是这样的。
880 0
|
JavaScript
js 抓取屏幕宽度设置字体大小 rem
var doc = window.document var docEl = doc.documentElement var tid function refreshRem () { var width = docEl.
884 0
|
Web App开发 数据采集 JavaScript
有了 Docker,用 JavaScript 框架开发的 Web 站点也能很好地支持网络爬虫的内容抓取
本文讲的是有了 Docker,用 JavaScript 框架开发的 Web 站点也能很好地支持网络爬虫的内容抓取,【编者的话】Prerender 服务能够为网络爬虫提供预先渲染的动态页面内容,解决了用 JavaScript 框架构建的 Web 站点不支持爬虫抓取的问题。
1330 0
|
Web App开发 前端开发 JavaScript
|
数据采集 JavaScript 前端开发
|
JavaScript Python Windows
python selenium,PhantomJS运用 抓取滚动条滚动加载的页面, js动作操作,模拟登陆
1、运用 #!/usr/bin/python #encoding=utf-8 import sys from selenium import webdriver reload(sys) sys.setdefaultencoding( "utf-8" ) driver = webdriver.PhantomJS(executable_path='/home/lhy/phantomjs
3347 0