说明
selenium 是一个自动化测试工具,而爬虫中使用它主要是为了解决 requests 无法执行
javaScript代码的问题
。
优点
通过驱动浏览器
,完全模拟浏览器的操作
,比如跳转、输入、点击、下拉等…进而拿到网页渲染之后的结果,可支持多种浏览器,真正做到可见及可爬。
缺点
使用 selenium 本质上是驱动浏览器对目标站点发送请求
,那浏览器在访问目标站点的时候,需要把静态资源都加载完毕
,比如html、css、js这些文件
,加载完成后,等待浏览器执行,最后呈现在页面
。所以用它的坏处就是效率极低!
所以我们一般用它来做登录验证
,Js 特别复杂,没有必要去解密的场景等。
使用
下载驱动
以谷歌浏览器为例
驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
找到本机安装的谷歌浏览器,与之对应的版本。(虽然驱动是32位,但是支持64位浏览器的)
基本使用
打开 大数据男孩 网站
from selenium import webdriver # 驱动的路径 bro = webdriver.Chrome(executable_path="./chromedriver_win32/chromedriver.exe") # 打开这个网址 bro.get(url="https://bigdataboy.cn/")
找到搜索按钮,并点击
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 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()
版权声明:《 selenium 入门使用 》为明妃原创文章,转载请注明出处!
最后编辑:2020-4-19 16:04:41