Skip to content

Latest commit

 

History

History
257 lines (174 loc) · 5.38 KB

File metadata and controls

257 lines (174 loc) · 5.38 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0557
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在: 
	- 个人网站: `https://oeasy.org` 
	- 蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
	- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
	- Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

安装环境

selenium

  • 这次我们研究selenium
    • 这是个啥呢?

图片描述

  • selenium
    • [səˈliːniəm]
      • 重音在li上
    • 硒(化学元素,用于制造电气设备和有色玻璃,人体缺此元素可致抑郁等病);
  • 我们去看看文档

官方文档

  • http://selenium.dev
  • 这是个浏览器的自动化工具
  • 可以把浏览器里面做的各种操作封装起来

图片描述

  • 具体来说有三种工具
    • web驱动
    • ide
    • 集群
  • 我们先来看web驱动

selenium webdriver

  • selenium可以
    • 用各种语言驱动
    • 各种主流的各种浏览器
  • 我们选择python作为主要的语言

图片描述

  • 首先还是要安装库

安装

pip3 install selenium
  • 安装这个包

图片描述

安装浏览器驱动

图片描述

  • 不同系统上有不同浏览器的驱动
  • 我们分别来介绍一下

linux 的 firefox 驱动

图片描述

解压

cd Code
wget https://labfile.oss.aliyuncs.com/courses/3584/geckodriver-v0.35.0-linux64.tar.gz
tar xf geckodriver-v0.35.0-linux64.tar.gz
  • 解压之后得到geckodriver

图片描述

  • ~/Code就是我们的selenium driver的路径

编写程序

  • 如果我们在~/Code下执行py文件
    • 就不用再设置路径
    • /home/shiyanlou/Code/
from selenium.webdriver.firefox.service import Service
from selenium import webdriver

service = Service(executable_path="/home/shiyanlou/Code/geckodriver")
driver = webdriver.Firefox(service=service)
driver.get("https://lanqiao.cn")
driver.quit()
  • 可以让本地火狐浏览器访问lanqiao.cn

图片描述

  • 注意浏览器的地址栏有粉色底纹

拷贝到系统路径

echo $PATH
sudo cp ./geckodriver /usr/bin
geckodriver
  • 可以运行

图片描述

  • ctrl + c
    • 结束进程

重写代码

  • 尝试将路径简化
from selenium.webdriver.firefox.service import Service
from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://lanqiao.cn")
driver.quit()
  • 修改了executable_path
    • 可以运行成功!
    • 可以延迟一定时间吗?

延迟时间

import time

from selenium.webdriver.firefox.service import Service
from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://lanqiao.cn")
time.sleep(10)
driver.quit()
  • 延迟10秒
    • 然后退出

mac 系统

  • 设置safari浏览器编号设置

图片描述

  • 高级里面找到开发菜单

图片描述

允许远程自动化

图片描述

  • 找到开发者
    • 允许远程自动化

图片描述

使用驱动

  • 驱动Safari
from selenium import webdriver
from time import sleep
driver = webdriver.Safari()  # 启动safari
driver.get('http://baidu.com')  # 打开baidu
sleep(3)
driver.quit()  # 关掉safari进程
  • 确实可以使用

win系统

图片描述

  • 下载驱动并解压

图片描述

  • 这个路径下可以直接使用geckodriver.exe
  • 是否可以把这个放到windows的系统目录中呢?

windows系统目录

图片描述

  • 确定专门的路径

图片描述

  • 将geckodriver.exe
    • 放到c:\Windows\system32
  • 这样就可以在任意路径下运行geckodriver.exe了

编写程序

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("http://www.lanqiao.cn")
driver.maximize_window()
print("title-----",driver.title.encode().decode("utf-8"))
print(driver.title)
driver.quit()
  • 访问成功

图片描述

总结

  • 这次我们了解了 selenium
    • selenium是 一个驱动真实浏览器的 工具
    • 支持 各种系统、很多种 主流浏览器
    • 把 浏览器的各种操作
      • 封装成 各种语言的 接口

图片描述

  • 我们使用 python的接口
    • 就可以让 一个真实浏览器 去访问网站
    • 从而 得到爬取的 效果
    • 可以 爬下来些什么 呢?🤔
  • 下次再说👋

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。