爬虫框架之selenium

假如想象 提交于 2020-03-02 20:00:53

Selenium

一、概述

  • Web自动化测试工具,可以运行在浏览器,根据指令操作浏览器
  • 只是工具,必须与第三方浏览器结合使用

安装:

  • Linux:sudo pip3 install selenium
  • Windows:python -m pip install selenium

phantomjs浏览器

定义:无界面浏览器(又称无头浏览器),在内存中进行页面加载,高效

安装(phantomjs、chromedriver、geckodriver)

Windows:

1、下载对应版本的phantomjs、chromedriver、geckodriver
2、把chromedriver.exe拷贝到python安装目录的Scripts目录下(添加到系统环境变量)
# 查看python安装路径: where python
3、验证
cmd命令行: chromedriver
# 下载地址
# 查看浏览器版本:右上角-帮助-关于google Chrome
# 网站中查看对应版本(notes.txt)
chromedriver : 下载对应版本
http://chromedriver.storage.googleapis.com/index.html

Linux:

1、下载后解压
tar -zxvf geckodriver.tar.gz
2、拷贝解压后文件到 /usr/bin/ (添加环境变量)
sudo cp geckodriver /usr/bin/
3、更改权限
cd /usr/bin/
chmod 777 geckodriver
sudo apt-get install phantomjs

测试:

from selenium import webdriver
brower = webdirver.Chrome()

打开浏览器,跳转到百度并搜索泰勒斯威夫特

from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get('http://www.baidu.com/')

# 向搜索框(id kw)输入 泰勒斯威夫特
ele = browser.find_element_by_xpath('//*[@id="kw"]')
ele.send_keys('泰勒斯威夫特')
time.sleep(1)
# 点击 百度一下 按钮(id su)
su = browser.find_element_by_xpath('//*[@id="su"]')
su.click()
# 截图
browser.save_screenshot('霉霉.png')
# 关闭浏览器
browser.quit()

二、基本用法

browser.page_cource返回响应内容

1. 浏览器方法

browser = webdriver.Chrome(executable_path='path')
browser.get(url)
browser.page_source # 查看响应内容
browser.page_source.find('字符串')
# 从html源码中搜索指定字符串,没有找到返回:-1
browser.quit() # 关闭浏览器

2. 节点查找

2.1 单节点

browser.find_element_by_id('')
browser.find_element_by_name('')
browser.find_element_by_class_name('')
browser.find_element_by_xpath('')

2.2 多节点

browser.find_elements_by_id('')
browser.find_elements_by_name('')
browser.find_elements_by_class_name('')
browser.find_elements_by_xpath('')

3.节点操作

ele.send_keys('') # 搜索框发送内容
ele.click() # 点击
ele.text # 获取文本内容
ele.get_attribute('src') # 获取属性值

4.无界面设置

from selenium import webdriver
options = webdriver.ChromeOptions()
# 添加无界面参数
options.add_argument('--headless')
browser = webdriver.Chrome(options=options)
browser.get('http://www.baidu.com/')
browser.save_screenshot('baidu.png')

5. 页面下拉

其实质就是运行JS代码

self.browser.execute_script(
'window.scrollTo(0,document.body.scrollHeight)'
)

6. 切换页面

适用页面:页面中点开链接出现新的页面,但是浏览器对象browser还是之前页面的对象

应对方案:

# 获取当前所有句柄(窗口)
all_handles = browser.window_handles
# 切换到新的窗口
browser.switch_to_window(all_handles[1])
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!