一.phantomjs的简单使用

  1. '''
  2. 什么是phantomJs:无界面的浏览器
  3. '''
  4. from selenium import webdriver
  5. from time import sleep
  6. bro = webdriver.PhantomJS(executable_path='./phantomjs-2.1.1-windows/bin/phantomjs.exe')
  7. sleep(2)
  8. bro.get(url='https://www.baidu.com/')
  9. sleep(3)
  10. text_input = bro.find_element_by_id('kw')
  11. text_input.send_keys('周杰伦')
  12. sleep(2)
  13. btn = bro.find_element_by_id('su')
  14. btn.click()
  15. sleep(3)
  16.  
  17. #浏览器执行js代码
  18. js = 'window.scrollTo(0,document.body.scrollHeight)'
  19. bro.execute_script(js)
  20. sleep(3)
  21. #截屏
  22. bro.save_screenshot('./ppppppp.png')
  23. #获取当前浏览器显示的页面数据
  24. page_text = bro.page_source #页面数据也包含动态加载出来的数据
  25. print(page_text)
  26.  
  27. bro.quit()

二.谷歌无头浏览器的简单使用

  1. from selenium import webdriver
  2. from selenium.webdriver.chrome.options import Options
  3. import time
  4. #指定url
  5. url='https://movie.douban.com/typerank?type_name=%E6%83%8A%E6%82%9A&type=19&interval_id=100:90&action='
  6. #创建一个参数对象,用来控制chrome以无界面打开
  7. chrome_options=Options()
  8. chrome_options.add_argument('--headless')
  9. chrome_options.add_argument('--disable-gpu')
  10. #驱动路径
  11. path='./chromedriver.exe'
  12. #创建浏览器对象
  13. bro=webdriver.Chrome(executable_path=path,chrome_options=chrome_options)
  14.  
  15. #获取数据
  16. bro.get('http://www.baidu.com/')
  17. time.sleep(2)
  18.  
  19. bro.save_screenshot('./baidu.png')
  20. bro.quit()

三.通过selenium和phtantosJs配合抓取到更多数据(ajax)

  selenium+phantomjs 就是爬虫终极解决方案:有些网站上的内容信息是通过动态加载js形成的,所以使用普通爬虫程序无法回去动态加载的js内容。

例如豆瓣电影中的电影信息是通过下拉操作动态加载更多的电影信息。
综合操作:需求是尽可能多的爬取豆瓣网中的电影信息

  1. from selenium import webdriver
  2. from time import sleep
  3. import time
  4.  
  5. if __name__ == '__main__':
  6. url = 'https://movie.douban.com/typerank?type_name=%E6%81%90%E6%80%96&type=20&interval_id=100:90&action='
  7. # 发起请求前,可以让url表示的页面动态加载出更多的数据
  8. path = r'C:\Users\Administrator\Desktop\爬虫授课\day05\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe'
  9. # 创建无界面的浏览器对象
  10. bro = webdriver.PhantomJS(path)
  11. # 发起url请求
  12. bro.get(url)
  13. time.sleep(3)
  14. # 截图
  15. bro.save_screenshot('1.png')
  16.  
  17. # 执行js代码(让滚动条向下偏移n个像素(作用:动态加载了更多的电影信息))
  18. js = 'window.scrollTo(0,document.body.scrollHeight)'
  19. bro.execute_script(js) # 该函数可以执行一组字符串形式的js代码
  20. time.sleep(2)
  21.  
  22. bro.execute_script(js) # 该函数可以执行一组字符串形式的js代码
  23. time.sleep(2)
  24. bro.save_screenshot('2.png')
  25. time.sleep(2)
  26. # 使用爬虫程序爬去当前url中的内容
  27. html_source = bro.page_source # 该属性可以获取当前浏览器的当前页的源码(html)
  28. with open('./source.html', 'w', encoding='utf-8') as fp:
  29. fp.write(html_source)
  30. bro.quit()

phantomjs的和谷歌浏览器的简单使用的更多相关文章

  1. Python实现的异步代理爬虫及代理池

    使用python asyncio实现了一个异步代理池,根据规则爬取代理网站上的免费代理,在验证其有效后存入redis中,定期扩展代理的数量并检验池中代理的有效性,移除失效的代理.同时用aiohttp实 ...

  2. 小而美的ghost driver

    做过selenium自动化项目的同学应该都遇到过这样的问题:测试用例太多,运行速度过慢导致团队成员怨声载道. 于是便有了selenium grid和多线程运行selenium测试用例的方法.这些方法各 ...

  3. CentOS在ssh下远程重装系统

    CentOS在ssh下远程重装系统 http://www.zxsdw.com/index.php/archives/913/ 国外VPS服务器一般都有控制面板,有很多种系统可自行安装,但国内有些IDC ...

  4. 爬虫请求库之selenium

    一.介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作, ...

  5. Ubuntu如何安装谷歌Chrome浏览器

    这里提供一个Ubuntu安装谷歌浏览器的简单方法. 1. 下载谷歌浏览器安装包 wget https://dl.google.com/linux/direct/google-chrome-stable ...

  6. selenium 使用教程详解-java版本

    第一章 Selenium 概述 1.1.Selenium 发展史 ​ Selenium是一系列基于Web的自动化工具,提供一套测试函数,用于支持Web自动化测试.函数非常灵活,能够完成界面元素定位.窗 ...

  7. Selenium + PhantomJS + python 简单实现爬虫的功能

    Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDrive ...

  8. PhantomJS实现最简单的模拟登录方案

    以前写爬虫,遇到需要登录的页面,一般都是通过chrome的检查元素,查看登录需要的参数和加密方法,如果网站的加密非常复杂,例如登录qq的,就会很蛋疼 在后面,有了Pyv8,就可以把加密的js文件扔给它 ...

  9. 下载谷歌浏览器(Chrome)扩展离线安装包crx文件最简单的方法

    转:http://alyzq.com/?p=627 如果不会使用,请看下面的操作步骤 引言(可以不看): 下面介绍一下,下载谷歌浏览器(Google Chrome)扩展的离线安装包crx文件最简单的方 ...

随机推荐

  1. python3--生成器并行运算

    # Auther: Aaron Fan """def consumer(name): print("%s 准备吃包子啦!" % name) while ...

  2. activex打包

    http://www.cnblogs.com/weiwin/p/4493835.html activeX 打包   原文 http://www.docin.com/p-409284488.html C ...

  3. SVN常见问题及解决方式(一)

    1.每天早上上班要update SVN,每天下班要commit SVN.2.查看是谁动了我的代码,右键 tortoise 后查看 log 日志.3.文件被别人删除,在空白处右击,show log,可以 ...

  4. 全排列——DFS实现

    原创 之间就写过一篇全排列的博客:https://www.cnblogs.com/chiweiming/p/8727164.html 详细介绍请回看,用的方法(暂且就叫)是“交换法”,其实思路就是DF ...

  5. JVM调用类的main方法的过程

    jvm先装载类,再链接类,再初始化类(以代码的文本顺序执行类变量初始化器.类静态初始化方法或接口的属性(field)初始化器),完成类的初始化后,才执行类的main方法.在链接过程中,可以静态链接(解 ...

  6. CreateExcel 导出Excel

    public class CreateExcel { /// <summary> /// 用Excel组件导出Excel文件 /// </summary> /// <pa ...

  7. Log--事务日志

    由于日志是顺序写入,而修改数据分散在数据库各个页面,属于随机写入,而磁盘顺序写入速度远高于随机写入,因此主流数据库都采用预写日志的方式来确保数据完整性 1.日志记录的是数据的变化而不是引发数据的操作2 ...

  8. C# 筛选string 类型里面的汉字,获取首字母字母,正则表达式Regex 常用验证

    界面效果 1.提取汉字 private void buttonX1_Click(object sender, EventArgs e) { if (TxtYuan.Text.Trim() != &qu ...

  9. JS判断键盘是否按了F5刷新

    <script type="text/javascript"> $(function () { $(document).keydown(function (event) ...

  10. android android studio

     android studio 一.安装及步骤: Android Studio安装: java jdk安装: jdk环境变量配置: 二.遇到的问题: 1.缺少jvm或java jdk路径不对,请指定正 ...