selenium 入门使用

说明

selenium 是一个自动化测试工具,而爬虫中使用它主要是为了解决 requests 无法执行 javaScript代码的问题

优点

通过驱动浏览器完全模拟浏览器的操作,比如跳转、输入、点击、下拉等…进而拿到网页渲染之后的结果,可支持多种浏览器,真正做到可见及可爬。

缺点

使用 selenium 本质上是驱动浏览器对目标站点发送请求,那浏览器在访问目标站点的时候,需要把静态资源都加载完毕,比如html、css、js这些文件加载完成后,等待浏览器执行,最后呈现在页面。所以用它的坏处就是效率极低! 所以我们一般用它来做登录验证,Js 特别复杂,没有必要去解密的场景等。

使用

下载驱动

以谷歌浏览器为例

驱动下载地址:http://chromedriver.storage.googleapis.com/index.html

找到本机安装的谷歌浏览器,与之对应的版本。(虽然驱动是32位,但是支持64位浏览器的)

mark

基本使用

打开 大数据男孩 网站

from selenium import webdriver

# 驱动的路径
bro = webdriver.Chrome(executable_path="./chromedriver_win32/chromedriver.exe")
# 打开这个网址
bro.get(url="https://bigdataboy.cn/")

mark

找到搜索按钮,并点击

from selenium import webdriver

# 驱动的地址
bro = webdriver.Chrome(executable_path="./chromedriver_win32/chromedriver.exe")
bro.get(url="https://bigdataboy.cn/")
# 找到搜索按钮
search_tab = bro.find_element_by_xpath('//span[@class="icon-search"]')
# 点击搜索按钮
search_tab.click()

mark

输入搜索内容

在输入内容之前,需要判断内容是否加载完成,给出的判断方案是:定时去某个标签,如果该标签存在了,则认为页面加载完成。

from selenium import webdriver

# 驱动的地址
bro = webdriver.Chrome(executable_path="./chromedriver_win32/chromedriver.exe")
bro.get(url="https://bigdataboy.cn/")

# 找到搜索按钮
search_tab = bro.find_element_by_xpath('//span[@class="icon-search"]')
# 点击搜索按钮
search_tab.click()

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
"""
判断 搜索 页面的记载情况
1. 默认 0.5 秒判断一次。Wait() 里 poll_frequency 参数设置
2. 判断标签的方法有:ID、NAME、CLASS_NAME、XPATH、TAG_NAME、LINK_TEXT、PARTIAL_LINK_TEXT、CSS_SELECTOR
"""
# 60秒 没有检测到 id 为 keyword 的标签表示,加载失败
WebDriverWait(bro, 60).until(EC.presence_of_element_located((By.ID, "keyword")))

# 找到输入框
input_tab = bro.find_element_by_xpath('//input[@id="keyword"]')
# 输入值
input_tab.send_keys("大数据男孩")

# 关闭浏览器
# bro.close()

mark

发表评论 / Comment

用心评论~