Python爬虫教程-28-Selenium 操纵 Chrome

我觉得本篇是很有意思的,闲着没事来看看!

Python爬虫教程-28-Selenium 操纵 Chrome

PhantomJS 幽灵浏览器,无界面浏览器,不渲染页面。Selenium + PhantomJS 在之前是很完美的搭配。后来在 2017 年 Google 宣布 Chrome 也宣布支持不渲染。所以 PhantomJS 使用的人就越来越少了,挺可惜,本篇介绍 Selenium + Chrome

安装Chrome浏览器和 Chromedriver

  • 安装 Chrome 浏览器就不介绍了
  • 安装 Chromedriver:
  • 注意:Chromedriver 需要根据自己的 Chrome 版本下载:
    • Chromedriver 所有版本下载地址:http://npm.taobao.org/mirrors/chromedriver/
    • 兼容版本请参照:Chrome版本与chromedriver兼容版本对照表
    • 下载解压即可,当然如果你解压到自己定义的目录,就需要配置一下环境,去环境变量,在 Path 加一条 Chromedriver 的安装目录
    • 如果你嫌配置环境变量太麻烦,就直接把它放到一个已经配置好环境变量的目录,比如 C:\Program Files (x86)

安装 Chromedriver-binary 包

  • 【PyCharm】>【file】>【settings】>【Project Interpreter】>【+】 >【BeautifulSoup4】>【install】
  • 具体操作截图:
    这里写图片描述
    安装好就可以尽情使用了

Selenium 操作

  • Selenium 操作主要分两大类:
    • 得到 UI 元素
      • find_element_by_id
      • find_elements_by_name
      • find_elements_by_xpath
      • find_elements_by_link_text
      • find_elements_by_partial_link_text
      • find_elements_by_tag_name
      • find_elements_by_class_name
      • find_elements_by_css_selector
    • 基于 UI 元素操作的模拟
      • 单击
      • 右键
      • 拖拽
      • 输入
      • 可以通过 ActionsChains类来做到

案例 29chromedriver

# Selenium + Chrome 案例1
from selenium import webdriver

# 路径是自己解压安装 Chromedriver 的路径
driver = webdriver.Chrome()

url = "http://www.baidu.com"

driver.get(url)

# 根据id查找,后面加.text 表示拿看到的文本数据
text = driver.find_element_by_id('wrapper').text
print(text)

运行结果

1.控制台:打印出来了我们想要的能看到的文本
这里写图片描述
2.我们可以看到:执行程序自动打开了一个 Chrome 浏览器的窗口,并提示 Chrome 正受到自动检测软件的控制
这里写图片描述
此时,既然已经控制了浏览器,我们就可以进行更多操作了

重要案例 29chromedriver2.py

# Selenium + Chrome 案例2
# 打开的浏览器可能会弹窗,点击【取消】或者【不管它】都行
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys

# 默认不需要路径,如果没有环境变量就需要加上
driver = webdriver.Chrome()

url = "http://www.baidu.com"

driver.get(url)

# 根据id查找,后面加.text 表示拿看到的文本数据
text = driver.find_element_by_id('wrapper').text

print(driver.title)

# 对页面截屏,保存为 baidu.png
driver.save_screenshot('py29baidu.png')

# 控制 Chrome 在输入框输入大熊猫
driver.find_element_by_id('kw').send_keys(u"大熊猫")
# 单击搜索按钮,id = 'su'
driver.find_element_by_id('su').click()

# 缓冲5秒,让页面加载图片等
time.sleep(5)
# 截屏,保存
driver.save_screenshot("py29daxiongmao.png")

# 获取当前页面的 cookie 常用在需要登录的页面
print(driver.get_cookie('cookie'))

# 模拟 按下两个按键 Ctrl + a
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')
# 模拟 按下两个按键 Ctrl + c
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'c')

运行结果

运行代码,会自动打开浏览器,自动输入大熊猫,自动截屏并保存,然后选中输入框内容,然后拷贝
这里写图片描述
是不是很神奇,保存的截屏和代码同级目录

更多文章链接:Python 爬虫随笔


- 本笔记不允许任何个人和组织转载
posted @ 2018-09-06 21:11  xpwi  阅读(1966)  评论(0编辑  收藏  举报