Python 爬虫学习笔记(八(2))Selenium交互

一、Selenium交互

用selenium打开网页后,也可以做一系列真人的操作,也就是利用selenium和浏览器交互。以下几个函数较为重要:

  1. input.send_keys() 传递输入内容给某输入框
  2. button.click() 点击某按钮
  3. browser.execute_script()执行某脚本例如滑动页面
  4. browser.back()回到上一页面
  5. browser.forward()前往下一页面

下面的示例代码可以实现自动打开百度搜索,输入周杰伦,滑动页面到最底部,点击下一页,回退到上一页面,前进到下一页面,关闭浏览器的一系列操作(自动化,神奇!):

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

path = 'chromedriver.exe'
browser = webdriver.Chrome(path)

url = 'https://www.baidu.com'
browser.get(url)

time.sleep(2)

# 找到输入框,并输入‘周杰伦’
input_ = browser.find_element(By.ID, 'kw')
input_.send_keys('周杰伦')

time.sleep(2)

# 找到’百度一下‘,并点击
button = browser.find_element(By.ID, 'su')
button.click()

time.sleep(2)
# 滑动页面到底部
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)

time.sleep(2)

# 找到’下一页‘,并点击
next_page = browser.find_element(By.CLASS_NAME, 'n')
next_page.click()

# 返回上一页
browser.back()
time.sleep(2)

# 前进一页
browser.forward()
time.sleep(2)

# 关闭页面
browser.quit()

不过运行次数多了,百度会弹出一个安全验证,以判断你是不是真人,之后再研究如何破解。。


二、Chrome headless

selenium运行的速度较慢,一部分原因是它有界面。在selenium中还有两个可以让你不打开UI界面使用浏览器的方式,Phantomjs和headless。Phantomjs已经被弃用停止维护,所以这里只介绍headless。

其配置方式很固定,一般将其封装为一个函数。虽然没有UI界面,但是可以通过browser.save_screenshot()来获取浏览器屏幕截图。

代码如下

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


def share_browser():
    chrome_options = Options()
    chrome_options.add_argument('headless')  #是--headless不是__headless
    chrome_options.add_argument('--disable-gpu')

    # 本机chrome浏览器所在位置
    path = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
    chrome_options.binary_location = path

    broswer = webdriver.Chrome(chrome_options=chrome_options)
    return broswer


browser = share_browser()
url = 'https://www.baidu.com'
browser.get(url)
browser.save_screenshot('baidu.png')

总结

  1. selenium交互分为有界面和无界面两种方式
  2. 有界面交互能看到每一个步骤,但速度慢
  3. 无界面交互Phantomjs已被弃用,headless配置方法和函数封装直接copy即可。save_screenshot()可以浏览器截屏。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

湫兮如风i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值