一.phantomjs的简单使用

'''
什么是phantomJs:无界面的浏览器
'''
from selenium import webdriver
from time import sleep
bro = webdriver.PhantomJS(executable_path='./phantomjs-2.1.1-windows/bin/phantomjs.exe')
sleep(2)
bro.get(url='https://www.baidu.com/')
sleep(3)
text_input = bro.find_element_by_id('kw')
text_input.send_keys('周杰伦')
sleep(2)
btn = bro.find_element_by_id('su')
btn.click()
sleep(3) #浏览器执行js代码
js = 'window.scrollTo(0,document.body.scrollHeight)'
bro.execute_script(js)
sleep(3)
#截屏
bro.save_screenshot('./ppppppp.png')
#获取当前浏览器显示的页面数据
page_text = bro.page_source #页面数据也包含动态加载出来的数据
print(page_text) bro.quit()

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

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

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

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

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

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

最新文章

  1. 【原】让H5页面适配移动设备全家 - 前端篇 - PPT
  2. 习题: codevs 2492 上帝造题的七分钟2 解题报告
  3. 视图组件(View)
  4. UVa10023手动开大数平方算法
  5. 有关Ant编译
  6. hadoop 2.6.0上安装sqoop-1.99.6-bin-hadoop200
  7. 基于visual Studio2013解决C语言竞赛题之0305显示星期
  8. storm中的Scheduler
  9. 通过批处理进行Windows服务的安装/卸载&启动/停止
  10. Probability和Likelihood的区别
  11. 【转】STM32 独立看门狗简介
  12. PhysX Clothing for UE4
  13. 吴裕雄 python神经网络 水果图片识别(5)
  14. 《Google Glass开发指南》
  15. WCF的简单使用
  16. spring-boot @Async 的使用、自定义Executor的配置方法
  17. 如何测试Linux 中的wait函数能不能等待子进程的子进程?
  18. Bootstrap-Plugin:模态框(Modal)插件
  19. [Python] 项目打包发布
  20. V1-bug Alpha阶段发布说明

热门文章

  1. Luogu 3206 [HNOI2010]城市建设
  2. 专题2-通过按键玩中断\第1课-中断处理流程深度剖析-lesson1
  3. Edge 自动给数字加下划线的问题
  4. 「CF932E」 Team Work
  5. OC自定义文档头部注释
  6. day5学python 基础+装饰器内容
  7. 标准模板库使用参考——vector向量容器
  8. CString、string、string.h的区别
  9. python 面向对象十一 super函数
  10. Array数组结构底层实现复习