转自:自由爸爸,iceblue iceblue,王阳阳

详细内容请参考:Selenium-Python中文文档

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

1. 两种基本的解决方案

1.1 用dryscrape库动态抓取页面

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

1 import dryscrape
2 # 使用dryscrape库 动态抓取页面
3 def get_url_dynamic(url):
4     session_req=dryscrape.Session()
5     session_req.visit(url) #请求页面
6     response=session_req.body() #网页的文本
7     #print(response)
8     return response
9 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 def get_url_dynamic2(url):
2     driver=webdriver.Firefox() #调用本地的火狐浏览器,Chrom 甚至 Ie 也可以的
3     driver.get(url) #请求页面,会打开一个浏览器窗口
4     html_text=driver.page_source
5     driver.quit()
6     #print html_text
7     return html_text
8 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

转载于:https://www.cnblogs.com/taolusi/p/9282565.html

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

  1. python爬取js_Python爬取javascript(js)动态网页

    python有许多库可以让我们很方便地编写网络爬虫,爬取某些页面,获得有价值的信息!但许多时候,爬虫取到的页面仅仅是一个静态的页面,即网页 的源代码,就像在浏览器上的"查看网页源代码&quo ...

  2. Java+Selenium爬取JavaScript返回的网页数据

    案例:本文主要描述如何根据快递单号使用Java+Selenium爬取"爱查快递网页"快递的跟踪信息并按照设计的数据格式返回数据 解决问题:爬取JavaScript返回的网页数据(网 ...

  3. python爬取B站动态的评论总数(不含用户评论内容详情)

    目录 前言 需求 方案分析 方案一 方案二 接口分析 请求流程 抓包演示 请求接口 接口说明 接口测试 代码 前言 想看接口分析和代码的,可跳过前言. 更新,最核心的代码已删除,思路和其他代码保留. ...

  4. Python爬取西刺代理网页

    爬取西刺代理网页的信息,并保存到本地的TXT文本或者mysql数据库中 本文只做爬取网页的练习 代码如下: import requests from lxml import etree import ...

  5. 照葫芦画瓢之python爬虫系列----(2)初次爬取简单的动态网页数据(网易、QQ音乐排行榜)

    感谢提供素材的同学,无论好坏,高低,我都真心佩服你:参考文章地址:https://mp.weixin.qq.com/s/AXr8BjR_tU-E9YBo-mLVlg 爬取网易云音乐榜单 在上一篇的文章 ...

  6. python爬取猫眼遇到动态字体反爬

    前一段时间,爬取了58同城,发现当时的网页对数字有字体反爬虫,然后废了九牛二虎之力找到了规律,终于破解了反爬虫,后来发现猫眼的这个网页虽然使用了字体反爬,但是和原来的58同城还是有很大的差别,后来了解 ...

  7. python爬虫网页图片显示不出来_用Python爬取20万条网页美女图片,两只眼睛 都看不过来了!...

    前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...

  8. python 爬取静态 静态 静态网页

    该文章是我在练习基础是写的一个小项目,爬取的是一个网站的图片(妹子才是学习的动力).其中用到了线程和xpath等知识的应用,属于小白入门篇,各位大佬要是在浏览过程中发现可以优化的地方尽情留言,先给各位 ...

  9. python爬取数据总结_2020-10-23Python——网页数据爬取知识总结

    一.爬虫请求方法 1.模块名:urllib.resquest 2.导入的方式: import urllib.resquest from urllib import request 3.使用的方法 re ...

  10. python爬取javascript变量数据_javascript - [新手]python爬虫爬取中证指数官网数据

    问 题 想用python爬虫获取中证指数官网上的几个主要指数的每日估值更新,但是下载下来的页面内容却没有想要的数据.想要的数据前面有个JavaScript标签,是不是光靠python没办法获取这个数据 ...

最新文章

  1. boost::safe_numerics模块实现隐式转换更改数据值的测试程序
  2. 信息学奥赛一本通 1029:计算浮点数相除的余 | OpenJudge NOI 1.3 11
  3. vs 2005應用2003框架
  4. git revert与git reset
  5. 汉代以前,鸳鸯是形容兄弟感情的,后来演变为男女感情
  6. 程序语言POJ 2406 Power Strings
  7. 阻抗匹配四参数:反射系数、行波系数、驻波比、回波损耗
  8. 关于计算机组装与维护的论文,计算机组装与维护论文范文
  9. CortexM3/M4(3)-指令集
  10. App开发者如何选择移动广告平台1 - 开发者规模分析
  11. 我希望逢着一个丁香一样地结着愁怨的姑娘
  12. 【排序算法】图解直接插入排序(图解堪比Debug显示每次循环结果)
  13. 新闻页面数据分页and添加新闻评论
  14. Spring DI 概述
  15. 计算机视觉(东北大学)慕课参考答案
  16. 解决pdf打印预览中遇到特殊字符,导出失败问题
  17. pfam的使用-自用
  18. 6-RabbitMQ实战
  19. 【软件测试】测试的天花板?资深测试怎么一路爬的......
  20. Netty 实现高并发通讯原理理解

热门文章

  1. TeaVM的samples/benchmark范例运行办法
  2. 解决办法:syslinux:Accessing physical drive
  3. 百度网盘也能BT下载ED2K
  4. LINUX查询版本情况
  5. 平时多流汗,战时少流血
  6. 吾有个怪习惯:看书时经常把ABC结构的词看成ACB
  7. VC++字符串类型转换
  8. android notify,android4.0 MediaPlayer的notify监听机制的全面剖析
  9. php生成excel完整实例代码,PHP输出Excel实例代码
  10. phython在file同时写入两个_Python实现读取excel写入mysql的小工具详解