python有许多库可以让我们很方便地编写网络爬虫,爬取某些页面,获得有价值的信息!但许多时候,爬虫取到的页面仅仅是一个静态的页面,即网页 的源代码,就像在浏览器上的“查看网页源代码”一样。一些动态的东西如javascript脚本执行后所产生的信息,是抓取不到的,这里暂且先给出这么一 些方案,可用于python爬取js执行后输出的信息。

1. 两种基本的解决方案

1.1 用dryscrape库动态抓取页面

js脚本是通过浏览器来执行并返回信息的,所以,抓取js执行后的页面,一个最直接的方式就是用python模拟浏览器的行为。WebKit 是一个开源的浏览器引擎,python提供了许多库可以调用这个引擎,dryscrape便是其中之一,它调用webkit引擎来处理包含js等的网页!

1 importdryscrape2 #使用dryscrape库 动态抓取页面

3 defget_url_dynamic(url):4 session_req=dryscrape.Session()5 session_req.visit(url) #请求页面

6 response=session_req.body() #网页的文本

7 #print(response)

8 returnresponse9 get_text_line(get_url_dynamic(url)) #将输出一条文本

这里对于其余包含js的网页也是适用的!虽然可以满足抓取动态页面的要求,但缺点还是很明显的:慢!太慢了,其实想一想也合理,python调用 webkit请求页面,而且等页面加载完,载入js文件,让js执行,将执行后的页面返回,慢一点也是应该的!除外还有很多库可以调用 webkit:PythonWebkit,PyWebKitGit,Pygt(可以用它写个浏览器),pyjamas等等,听说它们也可以实现相同的功 能!

1.2 selenium web测试框架

selenium是一个web测试框架,它允许调用本地的浏览器引擎发送网页请求,所以,它同样可以实现抓取页面的要求。

# 使用 selenium webdriver 可行,但会实时打开浏览器窗口

1 defget_url_dynamic2(url):2 driver=webdriver.Firefox() #调用本地的火狐浏览器,Chrom 甚至 Ie 也可以的

3 driver.get(url) #请求页面,会打开一个浏览器窗口

4 html_text=driver.page_source5 driver.quit()6 #print html_text

7 returnhtml_text8 get_text_line(get_url_dynamic2(url)) #将输出一条文本

这也不失为一条临时的解决方案!与selenium类似的框架还有一个windmill,感觉稍复杂一些,就不再赘述!

2. selenium的安装与使用

2.1 selenium的安装

在Ubuntu上安装可以直接使用pip install selenium。由于以下原因:

1. selenium 3.x开始,webdriver/firefox/webdriver.py的__init__中,executable_path="geckodriver";而2.x是executable_path="wires"

2. firefox 47以上版本,需要下载第三方driver,即geckodriver

还需要一些特殊操作:

1. 下载 geckodriverckod 地址: mozilla/geckodriver

2. 解压后将geckodriverckod 存放至 /usr/local/bin/ 路径下即可:sudo mv ~/Downloads/geckodriver /usr/local/bin/

2.2 selenium的使用

1. 运行报错:

driver = webdriver.chrome()

TypeError: 'module' object is not callable

解决方案:浏览器的名称需要大写Chrome和Firefox,Ie

2. 通过

1 content = driver.find_element_by_class_name('content')

来定位元素时,该方法返回的是FirefoxWebElement,想要获取包含的值时,可以通过

1 value = content.text

python爬取js_Python爬取javascript(js)动态网页相关推荐

  1. 使用JavaScript制作动态网页-1

    使用JavaScript制作动态网页-1 JavaScript是什么 JavaScript是一种描述语言,基于对象和事件驱 动的脚本语言. 1. JavaScript的特点 脚本语言(一种轻量级的编程 ...

  2. python爬取js动态网页_Python 从零开始爬虫(八)——动态爬取解决方案 之 selenium

    selenium--自动化测试工具,专门为Web应用程序编写的一个验收测试工具,测试其兼容性,功能什么的.然而让虫师们垂涎的并不是以上的种种,而是其通过驱动浏览器获得的解析JavaScript的能力. ...

  3. python爬取今日头条热点新闻事件,Python爬虫实战入门五:获取JS动态内容—爬取今日头条...

    之前我们爬取的网页,多是HTML静态生成的内容,直接从HTML源码中就能找到看到的数据和内容,然而并不是所有的网页都是这样的. 有一些网站的内容由前端的JS动态生成,由于呈现在网页上的内容是由JS生成 ...

  4. python网络爬虫学习笔记(6)动态网页抓取(一)知识

    文章目录 网络爬虫学习笔记(2) 1 资料 2 笔记 2-1 动态抓取概述 2-2 通过浏览器审查元素解析真实网页地址 2-3 网页URL地址的规律 2-4 json库 2-5 通过Selenium模 ...

  5. 用Java和webmagic爬取图片并下载到本地(动态网页)

    上篇记录了一下用java代码爬取图片并下载到本地的代码,但是那只是对于一张图片.如果要很多图片的话, 就需要把代码改一下.如果是静态页面,可以不用webmagic(不过用webmagic更加方便):动 ...

  6. javascript - js 创建网页 url 桌面快捷方式(兼容chrome)-书签工具

    网上搜索了一圈,都是用 ActiveXObject("WScript.Shell");  只能是IE使用, 老款的IE本能就可以右键创建桌面快捷方式,我要的是可以Chrome和其他 ...

  7. python爬取js动态网页_Python 爬取网页中JavaScript动态添加的内容(一)

    当我们进行网页爬虫时,我们会利用一定的规则从返回的 HTML 数据中提取出有效的信息.但是如果网页中含有 JavaScript 代码,我们必须经过渲染处理才能获得原始数据.此时,如果我们仍采用常规方法 ...

  8. python网络爬虫学习笔记(7)动态网页抓取(二)实践

    文章目录 1 资料 2 笔记 2-1 准备 2-1-1. 网址 2-2-2 文本位置 2-2 代码 2-2-1 原型 2-2-2 ver0.1 1 资料 <Python网络爬虫从入门到实践> ...

  9. Python爬虫(三):真·解决动态网页

    前言 上一篇博文中, 笔者采用了selenium驱动chrome来抓取网页, 总结来看及其低效- 想了一下, 不能这样搞, 他要刷新局部界面肯定是要利用JavaScript调用已经写好的json的. ...

最新文章

  1. c语言cythe头文件,第5章 C语言序的基本结构.doc
  2. python是不是特别垃圾-【转】python是垃圾吗?
  3. U盘安装openSuse
  4. Linux系统(Centos)下安装nodejs并配置环境
  5. 2018 开源分布式中间件 DBLE 年报
  6. ELK --- Grok正则过滤Linux系统登录日志
  7. 普华永道发表2012年全球信息安全状况调查报告
  8. 匿名内部类为什么访问外部类局部变量必须是final的?
  9. Latex 制作表格
  10. 2015美团校招面试总结
  11. Python中 'unicodeescape' codec can't decode bytes in position XXX: trun错误解决方案
  12. 计算机专业选什么笔记本cpu,笔记本电脑什么配置好?来看看这款硬核办公本
  13. 互联网协议 传输层及概述
  14. 【转】完美解决iphone连电脑蓝牙出现bluetooth外围设备无法正确安装
  15. snowboy嵌入式_编译配置SNOWBOY
  16. 假设检验_样本容量选取20211204
  17. android系统手机流量控制方法,手机流量控制!安卓手机控制流量设置小技巧
  18. react生命周期及hooks
  19. 乔布简历:谁说我只是个简历模板库?
  20. uniny 物体运动到一个点停止_海洋科学导论复习题

热门文章

  1. 网络唤醒 php,php远程网络唤醒计算机及WOL唤醒魔术包格式原理
  2. IPD的决策评审DCP(1):概念、战略性
  3. word的常见问题及解决办法
  4. 第7章第27节:三图排版:三张图片交错对齐排列 [PowerPoint精美幻灯片实战教程]
  5. hp服务器重置bmc,服务器BMC(带外)
  6. 如何在微信直接下载APP(iOS/Android)的解决方案
  7. 【综述】对话系统中的口语理解技术
  8. RPA:让电商财务拥有“分身术”
  9. 传教士与野人过河问题 人工智能实验算法
  10. Freda的队列 简单模拟