Python爬虫之selenium的使用(八)

Python爬虫之selenium的使用

一、简介

二、安装

三、使用

一、简介

Selenium 是自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。Selenium 支持这些浏览器驱动。Selenium支持多种语言开发,比如 Python,Java,C,Ruby等等。

二、安装

1.安装selenium

pip3 install selenium

2.配置驱动  (下载驱动,然后将驱动文件路径配置在环境变量)

驱动下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads

注意:你下载的驱动要和你浏览器版本能够兼容才能使用。

三、使用

1.声明浏览器对象

from selenium import webdriver

browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.Phantom()
browser = webdriver.FirefoxJS()
browser = webdriver.Safari()

  

2.访问页面

from selenium import webdriver

broswer = webdriver.Chrome()#访问淘宝页面
broswer.get(‘https://www.taobao.com‘)#获取页面源代码
print(broswer.page_source)#关闭
broswer.close()

  

3.查找单个元素

from selenium import webdriver

# 启动配置
option = webdriver.ChromeOptions()
option.add_argument(‘disable-infobars‘)

# 打开chrome浏览器
broswer = webdriver.Chrome()
broswer.get(‘https://www.taobao.com‘)#下面三种方法都是获取同一元素
input1 = broswer.find_element_by_id(‘q‘)
input2 = broswer.find_element_by_css_selector(‘#q‘)
input3 = broswer.find_element_by_xpath(‘//*[@id="q"]‘)
print(input1,input2,input3)
broswer.close()

  

运行结果如下:

<selenium.webdriver.remote.webelement.WebElement (session="b26040f3a0b3810381abd8f13e513095", element="0.3260737871611288-1")> <selenium.webdriver.remote.webelement.WebElement (session="b26040f3a0b3810381abd8f13e513095", element="0.3260737871611288-1")> <selenium.webdriver.remote.webelement.WebElement (session="b26040f3a0b3810381abd8f13e513095", element="0.3260737871611288-1")>

全部获取单个元素的方法:

find_element_by_id()
find_element_by_name()
find_element_by_xpath()
find_element_by_link_test()
find_element_by_tag_name()
find_element_by_class_name()
find_element_by_css_selector()
find_element_by_partial_link_test()

  

4.查找多个元素

from selenium import webdriver

# 加启动配置
option = webdriver.ChromeOptions()
option.add_argument(‘disable-infobars‘)

# 打开chrome浏览器
broswer = webdriver.Chrome()
broswer.get(‘https://www.taobao.com‘)
input2 = broswer.find_elements_by_css_selector(‘#q‘)print(input2) broswer.close()

  

运行结果如下:

[<selenium.webdriver.remote.webelement.WebElement (session="0c6d5918fff4982403777d89fd64b6bd", element="0.9184632404888653-1")>]

全部获取多个元素的方法:

find_elements_by_id()
find_elements_by_name()
find_elements_by_xpath()
find_elements_by_link_test()
find_elements_by_tag_name()
find_elements_by_class_name()
find_elements_by_css_selector()
find_elements_by_partial_link_test()

  

5.添加User-Agent

使用webdriver,是可以更改User-Agent的,代码如下:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument(‘user-agent="Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"‘)
driver = webdriver.Chrome(chrome_options=options)
driver.get(‘https://www.baidu.com/‘)

  

6.自动化测试的时候,启动浏览器出现‘Chrome正在受到自动软件的控制’,可以隐藏

在浏览器配置里加个参数,忽略掉这个警告提示语,disable_infobars

from selenium import webdriver

option = webdriver.ChromeOptions()

option.add_argument(‘disable-infobars‘)

driver = webdriver.Chrome(chrome_options=option)

driver.get(‘https://www.baidu.com/‘)

  

7.启动浏览器的时候不想看的浏览器运行,那就加载浏览器的静默模式,让它在后台偷偷运行。用headless

from selenium import webdriver

option = webdriver.ChromeOptions()

option.add_argument(‘headless‘)

driver = webdriver.Chrome(chrome_options=option)

driver.get(‘https://www.baidu.com/‘)

  

8.获取元素信息

# 获取属性
from selenium import webdriver

broswer = webdriver.Chrome()
url = ‘https://www.taobao.com‘
broswer.get(url)
logo = broswer.find_element_by_class_name(‘logo‘)
print(logo)
print(logo.get_attribute(‘class‘))

  

# 获取文本值
from selenium import webdriver

broswer = webdriver.Chrome()
url = ‘https://www.taobao.com‘
broswer.get(url)
li = broswer.find_element_by_class_name(‘J_SearchTab‘)
print(li)
print(li.text)

 

#获取ID、位置、标签名、大小
from selenium import webdriver

broswer = webdriver.Chrome()
url = ‘https://www.taobao.com‘
broswer.get(url)
logo = broswer.find_element_by_class_name(‘logo‘)
print(logo.id)
print(logo.location)
print(logo.tag_name)
print(logo.size)

  

9.交互操作

元素交互操作(先获取特定的元素,对获取的元素调用交互方法)

from selenium import webdriverimport time

# 加启动配置
option = webdriver.ChromeOptions()
option.add_argument(‘disable-infobars‘)

# 打开chrome浏览器
broswer = webdriver.Chrome()
broswer.get(‘https://www.taobao.com‘)
#获取输入框
input =broswer.find_element_by_id(‘q‘)#模拟用户输入iphone
input.send_keys(‘iphone‘)
time.sleep(2)#清除输入框
input.clear()#输入ipad
input.send_keys(‘ipad‘)#获取按钮
button = broswer.find_element_by_class_name(‘btn-search‘)#点击按钮button.click() 

更多元素交互操作:http://selenium-python.readthedocs.org/locating-elements.html

交互动作(将动作附加到动作链中串行执行)

执行JavaScript代码

from selenium import webdriver

broswer = webdriver.Chrome()
broswer.get(‘https://www.zhihu.com‘)
broswer.execute_script(‘window.scrollTo(0,document.body.scrollHeight)‘)
broswer.execute_script(‘alert("To Bottom")‘)

  

鼠标操作

在现实的自动化测试中关于鼠标的操作不仅仅是click()单击操作,还有很多包含在ActionChains类中的操作。如下:

  • context_click(elem) 右击鼠标点击元素elem,另存为等行为
  • double_click(elem) 双击鼠标点击元素elem,地图web可实现放大功能
  • drag_and_drop(source,target) 拖动鼠标,源元素按下左键移动至目标元素释放
  • move_to_element(elem) 鼠标移动到一个元素上
  • click_and_hold(elem) 按下鼠标左键在一个元素上
  • perform() 在通过调用该函数执行ActionChains中存储行为

举例如下图所示,获取通过鼠标右键另存为百度图片logo。代码:

键盘操作

参考:http://selenium-python.readthedocs.org/api.html
        前面讲述了鼠标操作,现在讲述键盘操作。在webdriver的Keys类中提供了键盘所有的按键操作,当然也包括一些常见的组合键操作如Ctrl+A(全选)、Ctrl+C(复制)、Ctrl+V(粘贴)。更多键参考官方文档对应的编码。

  • send_keys(Keys.ENTER) 按下回车键
  • send_keys(Keys.TAB) 按下Tab制表键
  • send_keys(Keys.SPACE) 按下空格键space
  • send_keys(Kyes.ESCAPE) 按下回退键Esc
  • send_keys(Keys.BACK_SPACE) 按下删除键BackSpace
  • send_keys(Keys.SHIFT) 按下shift键
  • send_keys(Keys.CONTROL) 按下Ctrl键
  • send_keys(Keys.ARROW_DOWN) 按下鼠标光标向下按键
  • send_keys(Keys.CONTROL,‘a‘) 组合键全选Ctrl+A
  • send_keys(Keys.CONTROL,‘c‘) 组合键复制Ctrl+C
  • send_keys(Keys.CONTROL,‘x‘) 组合键剪切Ctrl+X
  • send_keys(Keys.CONTROL,‘v‘) 组合键粘贴Ctrl+V

10.前进后退页面

import time
from selenium import webdriver
broswer = webdriver.Chrome()
broswer.get(‘https://www.baidu.com‘)
broswer.get(‘https://www.taobao.com‘)#后退
broswer.back()
time.sleep(2)#前进
broswer.forward()
broswer.close()

  

11.Cookies操作

from selenium import webdriver
broswer = webdriver.Chrome()
broswer.get(‘https://www.zhihu.com‘)#获取cookie
print(broswer.get_cookies())#添加cookie
broswer.add_cookie({‘name‘:‘name‘,‘value‘:‘germeny‘})#再次获取cookie
print(broswer.get_cookies())

 

12.选项卡操作

import time
from selenium import webdriver
broswer = webdriver.Chrome()
broswer.get(‘https://www.zhihu.com‘)#打开新窗口
broswer.execute_script(‘window.open()‘)
print(broswer.window_handles)#切断到第二个选项卡(窗口)
broswer.switch_to_window(broswer.window_handles[1])
time.sleep(1)#切换到第一个选项卡(窗口)
broswer.switch_to_window(broswer.window_handles[0])
broswer.get(‘https://www.baidu.com‘)

  

原文地址:https://www.cnblogs.com/-wenli/p/9900114.html

时间: 2024-11-08 02:35:44

Python爬虫之selenium的使用(八)的相关文章

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

在上一篇python使用xslt提取网页数据中,要提取的内容是直接从网页的source code里拿到的. 但是对于一些Ajax或动态html, 很多时候要提取的内容是在source code找不到的,这种情况就要想办法把异步或动态加载的内容提取出来. python中可以使用selenium执行javascript,selenium可以让浏览器自动加载页面,获取需要的数据.selenium自己不带浏览器,可以使用第三方浏览器如Firefox, Chrome等,也可以使用headless浏览器如P

python爬虫之Selenium

首先解决python中使用selenium调用Firefox缺少geckodriver的问题 geckodriver.exe下载地址 : https://pan.baidu.com/s/10Vy9WH1ZpkvdFmZ3T7aw_w , https://github.com/mozilla/geckodriver/releases 解压完成,然后放到python的安装目录与python.exe在同一目录下 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(在浏览器上点点点). 安

python爬虫之selenium、phantomJs

图片懒加载技术 什么是图片懒加载技术 图片懒加载是一种网页优化技术.图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间.为了解决这种问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载”. 如何实现图片懒加载技术 在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放

【python爬虫】selenium的三种等待

一. 强制等待 第一种也是最简单粗暴的一种办法就是强制等待sleep(xx),强制让闪电侠等xx时间,不管凹凸曼能不能跟上速度,还是已经提前到了,都必须等xx时间. 1 from selenium import webdriver 2 from time import sleep 3 driver = webdriver.Firefox() 4 driver.get('https://huilansame.github.io') 5 sleep(3) # 强制等待3秒再执行下一步 6 print

Python爬虫之Selenium的元素选取

1.单个元素的选取 find_element_by_id      通过标签属性Id查找元素 find_element_by_name      通过标签属性name查找元素 find_element_by_xpath      通过标签Xpath路径查找元素 find_element_by_link_text      通过标签中的元素文本链接查找元素 find_element_by_partial_link_text   find_element_by_tag_name      通过标签名

Python爬虫利器:Selenium的用法

本文和大家分享的主要是python 爬虫 利器Selenium的相关内容,一起来看看吧,希望对大家 学习python爬虫有所帮助. Selenium  是什么?一句话,自动化测试工具.它支持各种浏览器,包括  Chrome , Safari , Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个  Selenium  的插件,那么便可以方便地实现 Web界面的测试.换句话说叫  Selenium  支持这些浏览器驱动.话说回来, PhantomJS 不也是一个浏览器吗,那么  S

[python爬虫] Selenium定向爬取虎扑篮球海量精美图片

前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员还是写个程序来进行吧!        所以我通过Python+Selenium+正则表达式+urllib2进行海量图片爬取.        前面讲过太多Python爬虫相关的文章了,如爬取新浪博客.维基百科Infobox.百度百科.游迅网图片,也包括Selenium安装过程等等,详见我的两个专栏: 

Python爬虫实战(2):爬取京东商品列表

1,引言 在上一篇<Python爬虫实战:爬取Drupal论坛帖子列表>,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容.相反,JavaScript实现的动态网页内容,无法从html源代码抓取需要的内容,必须先执行JavaScript. 我们在<Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容>一文已经成功检验了动态网页内容的抓取方法,本文将实验程序进行改写,使用开源Python爬虫

python爬虫积累(一)--------selenium+python+PhantomJS的使用

最近按公司要求,爬取相关网站时,发现没有找到js包的地址,我就采用selenium来爬取信息,相关实战链接:python爬虫实战(一)--------中国作物种质信息网 一.Selenium介绍 Selenium 是什么?一句话,自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试.换句话说叫 Selenium 支持这些浏览器驱动.Selenium支持