简介

selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器

作用: 可以让浏览器完成相关自动化的操作

和爬虫的关联:

  • 模拟登陆
  • 可以获取动态加载的页面数据

编码流程:

  • 导包
  • 实例化浏览器对象(驱动)
  • 制定相关自动化的行为动作

环境安装

  • 下载安装selenium:pip install selenium
  • 下载浏览器驱动程序:
    • http://chromedriver.storage.googleapis.com/index.html
  • 查看驱动和浏览器版本的映射关系:
    • http://blog.csdn.net/huilan_same/article/details/51896672

简单使用/效果展示

01:

from selenium import webdriver
from time import sleep
bro = webdriver.Chrome(executable_path='./chromedriver.exe')
bro.get('https://www.baidu.com') #获取的连接页面
sleep(2)
#标签定位
tag_input = bro.find_element_by_id('kw')
tag_input.send_keys('人民币') #标签中输入值
sleep(2) btn = bro.find_element_by_id('su')
btn.click() #标签点击事件
sleep(2) bro.quit() #退出

02.

from selenium import webdriver
from time import sleep
bro = webdriver.Chrome(executable_path='./chromedriver.exe') bro.get('https://xueqiu.com/')
sleep(5) #执行js实现滚轮向下滑动
js = 'window.scrollTo(0,document.body.scrollHeight)' #两个参数一个是X轴,一个是y轴,此时用的是Y轴
bro.execute_script(js)
sleep(2)
bro.execute_script(js)
sleep(2)
bro.execute_script(js)
sleep(2)
bro.execute_script(js)
sleep(2) a_tag = bro.find_element_by_xpath('//*[@id="app"]/div[3]/div/div[1]/div[2]/div[2]/a')
a_tag.click()
sleep(5)
#获取当前浏览器页面数据(动态)
print(bro.page_source) bro.quit()

PhantomJs及谷歌无头浏览器无可视化:

#PhantomJs是一款无可视化界面的浏览器(免安装)

from selenium import webdriver

from time import sleep

bro = webdriver.PhantomJS(executable_path=r'C:\Users\Administrator\Desktop\爬虫+数据\爬虫day03\phantomjs-2.1.1-windows\bin\phantomjs.exe')

bro.get('https://xueqiu.com/')

sleep(2)

bro.save_screenshot('./1.png')

#执行js实现滚轮向下滑动

js = 'window.scrollTo(0,document.body.scrollHeight)'

bro.execute_script(js)

sleep(2)

bro.execute_script(js)

sleep(2)

bro.execute_script(js)

sleep(2)

bro.execute_script(js)

sleep(2)

bro.save_screenshot('./2.png')

# a_tag = bro.find_element_by_xpath('//*[@id="app"]/div[3]/div/div[1]/div[2]/div[2]/a')

# bro.save_screenshot('./2.png')

# a_tag.click()

sleep(2)

#获取当前浏览器页面数据(动态)

print(bro.page_source)

bro.quit()

现在用的很少,知道即可 



from selenium import webdriver from time import sleep from selenium.webdriver.chrome.options import Options # 创建一个参数对象,用来控制chrome以无界面模式打开 chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=chrome_options) bro.get('https://www.baidu.com') sleep(2) bro.save_screenshot('1.png') #标签定位 tag_input = bro.find_element_by_id('kw') tag_input.send_keys('人民币') sleep(2) btn = bro.find_element_by_id('su') btn.click() sleep(2) print(bro.page_source) bro.quit() 谷歌无头浏览器

爬虫之Selenium的更多相关文章

  1. [Python爬虫]使用Selenium操作浏览器订购火车票

    这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分 [Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium) [Python爬虫]使用Python爬取静态网页-斗 ...

  2. 一起学爬虫——使用selenium和pyquery爬取京东商品列表

    layout: article title: 一起学爬虫--使用selenium和pyquery爬取京东商品列表 mathjax: true --- 今天一起学起使用selenium和pyquery爬 ...

  3. 爬虫系列---selenium详解

    一 安装 pip install Selenium 二 安装驱动 chrome驱动文件:点击下载chromedriver (yueyu下载) 三 配置chromedrive的路径(仅添加环境变量即可) ...

  4. Python 爬虫利器 Selenium 介绍

    Python 爬虫利器 Selenium 介绍 转 https://mp.weixin.qq.com/s/YJGjZkUejEos_yJ1ukp5kw 前面几节,我们学习了用 requests 构造页 ...

  5. Python爬虫之selenium的使用(八)

    Python爬虫之selenium的使用 一.简介 二.安装 三.使用 一.简介 Selenium 是自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏 ...

  6. Python爬虫之selenium高级功能

    Python爬虫之selenium高级功能 原文地址 表单操作 元素拖拽 页面切换 弹窗处理 表单操作 表单里面会有文本框.密码框.下拉框.登陆框等. 这些涉及与页面的交互,比如输入.删除.点击等. ...

  7. Python爬虫之selenium库使用详解

    Python爬虫之selenium库使用详解 本章内容如下: 什么是Selenium selenium基本使用 声明浏览器对象 访问页面 查找元素 多个元素查找 元素交互操作 交互动作 执行JavaS ...

  8. Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容

    1,引言 在Python网络爬虫内容提取器一文我们详细讲解了核心部件:可插拔的内容提取器类gsExtractor.本文记录了确定gsExtractor的技术路线过程中所做的编程实验.这是第二部分,第一 ...

  9. python爬虫利器Selenium使用详解

    简介: 用pyhon爬取动态页面时普通的urllib2无法实现,例如下面的京东首页,随着滚动条的下拉会加载新的内容,而urllib2就无法抓取这些内容,此时就需要今天的主角selenium. Sele ...

  10. Python爬虫小白---(二)爬虫基础--Selenium PhantomJS

    一.前言   前段时间尝试爬取了网易云音乐的歌曲,这次打算爬取QQ音乐的歌曲信息.网易云音乐歌曲列表是通过iframe展示的,可以借助Selenium获取到iframe的页面元素, 而QQ音乐采用的是 ...

随机推荐

  1. 20190923-03Linux时间日期类 000 011

    1.基本语法 date [OPTION]... [+FORMAT] 2.选项说明 表1-20 选项 功能 -d<时间字符串> 显示指定的“时间字符串”表示的时间,而非当前时间 -s< ...

  2. 20190918-03关机重启命令及修改root密码 000 006

    (1)sync   (功能描述:将数据由内存同步到硬盘中) (2)halt (功能描述:关闭系统,等同于shutdown -h now 和 poweroff) (3)reboot (功能描述:就是重启 ...

  3. JS语法_集合

    数组方法 forEach // no-log Array.prototype.forEach_ = function (cb) { let len = this.length for (let i = ...

  4. java中双亲委派机制(+总结)

    类加载器 加载类的开放性 类加载器(ClassLoader)是Java语言的一项创新,也是Java流行的一个重要原因.在类加载的第一阶段"加载"过程中,需要通过一个类的全限定名来获 ...

  5. PicGo软件搭配gitee实现图床

    1.安装PicGo软件,并配置gitee 1.1安装picGo picGo 安装gitee-uploader 插件 官网下载地址如下:最新版本 可以自行选择版本进行下载,这里我选择了最新的版本进行下载 ...

  6. Go语言 | 并发设计中的同步锁与waitgroup用法

    今天是golang专题的第16篇文章,我们一起来聊聊golang当中的并发相关的一些使用. 虽然关于goroutine以及channel我们都已经介绍完了,但是关于并发的机制仍然没有介绍结束.只有go ...

  7. JS -- 操作符和数组

    一.Javascript常用操作符 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  8. Linq To EF 用泛型时生成的Sql会查询全表的问题

    1.问题的现象 public class LinqHepler<T> where T:class { private EFDBContext _context = null; /// &l ...

  9. PJzhang:vulnhub靶机sunset系列SUNSET:TWILIGHT

    猫宁~~~ 地址:https://www.vulnhub.com/entry/sunset-twilight,512/ 关注工具和思路. nmap 192.168.43.0/24靶机IP192.168 ...

  10. Docker多主机管理(八)

    docker多主机管理 前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和 ...