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

1、两种基本的解决方案

1.1 用dryscrape库动态抓取页面

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

import dryscrape

# 使用dryscrape库 动态抓取页面

def get_url_dynamic(url):

session_req=dryscrape.Session()

session_req.visit(url) #请求页面

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

#print(response)

return response

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 可行,但会实时打开浏览器窗口

def get_url_dynamic2(url):

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

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

html_text=driver.page_source

driver.quit()

#print html_text

return html_text

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. 通过

content = driver.find_element_by_class_name('content')

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

value = content.text

到此这篇关于python如何爬取动态网站的文章就介绍到这了,更多相关python怎么爬动态网站内容请搜索python博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持python博客!

python爬虫什么网站都能爬吗_python如何爬取动态网站相关推荐

  1. Python爬虫新手入门教学(十五):爬取网站音乐素材

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  2. Python爬虫新手入门教学(二十):爬取A站m3u8视频格式视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 前文内容 Python爬虫新手入门教学(一):爬取豆瓣电影排行信息 Python爬虫新手入门 ...

  3. Python爬虫新手入门教学(十八):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  4. Python爬虫 | 对广州市政府数据统一开放平台数据的爬取

    Python爬虫 | 对广州市政府数据统一开放平台数据的爬取 简单爬虫 网页分析 爬虫代码 简单爬虫 本次爬虫演示的是对 广州市政府数据统一开放平台 数据的爬取 网页分析 我们先到url=' http ...

  5. Python爬虫系列之多多买菜小程序数据爬取

    Python爬虫系列之多多买菜小程序数据爬取 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流, ...

  6. Python爬虫新手入门教学(十六):爬取好看视频小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  7. Python爬虫系列之MeiTuan网页美食版块商家数据爬取

    Python爬虫系列之MeiTuan网页美食版块商家数据爬取 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代 ...

  8. python爬虫实践——零基础快速入门(四)爬取小猪租房信息

    上篇文章我们讲到python爬虫实践--零基础快速入门(三)爬取豆瓣电影 接下来我们爬取小猪短租租房信息.进入主页后选择深圳地区的位置.地址如下: http://sz.xiaozhu.com/ 一,标 ...

  9. python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例

    转载请注明出处:python–爬虫–模拟登录全面介绍和简例–以抓取雅卓app为例 我们在前面的文章中已经学习了如果使用python进行数据抓取. 但我们常常会遇到一种场景,就是想要获取的页面内容或者接 ...

最新文章

  1. 为SharePoint顶部链接开发自定义数据源
  2. python使用del保留字定义一个函数-Python使用什么保留字定义一个函数。
  3. Cloud for Customer里权限控制Business Role和Access context的截图
  4. android相对布局代码,Android基础_3 Activity相对布局(示例代码)
  5. 史上最丧心病狂的商品定价套路:如何从数学角度,榨干你身上的每一分钱
  6. 037-PHP如何返回闭包函数实例
  7. android 方法超时,android socket.io中的发出或确认超时处理?
  8. 小白如何写Python算法-计算模型稳定性评估指标PSI
  9. 使用will和would来提出请求_42
  10. 文件描述符(0、1、2)的用法
  11. 用C#制作PDF文件全攻略 (专至csdn)
  12. Java大数开根号板子
  13. python使用t检验和F检验验证模型好坏
  14. 【Datawhale第25期组队学习】Task01:异常检测概念和方法
  15. 电子线路设计技巧7:UC3843A升压电路中振荡频率和占空比的确定方法
  16. Python3网络爬虫
  17. pip3 install XXX加快下载速度
  18. linux 之atop 系统监控工具
  19. HTML5 的课堂案例
  20. android 短信消失,警告!安卓用户慎重使用谷歌Messages,短信会无端丢失

热门文章

  1. mysql+tushare搭建本地数据库
  2. 关于tcp网络通讯的几个场景的小测试
  3. padding和卷积的区别_TensorFlow笔记1——20.CNN卷积神经网络padding两种模式SAME和VALID...
  4. Python 之 Python2 和 Python3 的区别
  5. ubuntu之ufw防火墙
  6. java mapstring_ object 遍历_ListMapString,Object使用Java代码遍历以获取String,Object的值...
  7. 【传智播客】Libevent学习笔记(三):事件循环
  8. 十六进制转化为十进制
  9. 限制RICHTEXTBOX的输入的范围
  10. 打印网页时背景图片的问题