selenium安装比较简单,我推荐使用pycharm,在File | Settings | Project: prohect_name | Python Interpreter中搜索并进行安装:
我安装的selenium版本是4.7.2,有部分API出现了少些变化
以Google Chrome 为例
确定版本:
下载对应版本驱动:
下载后将文件解压,为一个chromedriver.exe应用程序,将程序放入Pyhton安装目录下的Scripts即可。
stealth.min.js用于隐藏selenium特征,增加爬取成功率,具体详细可去CSDN搜索相关内容进行查看。
stealth.min.js文件可通过在csdn搜索该文章进行下载
使用时进行读取执行js即可。
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
import time
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome()
# 读取js文件
with open('JS/stealth.min.js') as f:
js = f.read()
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': js})
# 对指定url发出请求
driver.get("https://baidu.com")
# 定位搜索框元素
search=driver.find_element(By.ID, "kw")
# 定位搜索按钮元素
btn=driver.find_element(By.CSS_SELECTOR, "#head_wrapper .s_btn")
# 键入内容,并搜索
ActionChains(driver) \
.send_keys_to_element(search,"CSDN")\
.click(btn) \
.perform()
time.sleep(100)
相信一些仔细的同学已经发现了在导包及定位元素交互时与之前版本的selenium有所出入:
导包时多了一个:from selenium.webdriver.common.by import By
定位元素时使用的:find_element(By.XXX," XXX ")
执行action时使用的:ActionChains(XXX).xxx.perform()
这也是目前selenium版本与之前版本的主要差别,首先导入By包,定位元素时需在By后面指定定位器,详细可查看中文文档。
结合这两天的学习给大家分享一下我定位元素时的小技巧,希望对大家有用~
通过ID定位:
因为在前端标签中,id为唯一值,因此如果有id,首先使用id进行定位:
如百度搜索栏:
定位:driver.find_element(By.ID, "kw")
通过CSS定位:
如果没有id,或者不想用id,则可用css定位:
如百度搜索按钮:按F12直接进行元素定位,获取css选择器,复制拷贝即可
定位:driver.find_element(By.CSS_SELECTOR, ".s_ipt_wr.bg, .s_btn_wr.bg, #su.bg")
通过XPATH定位:
XPATH的获取方法也很简单,直接通过F12选取元素进行拷贝即可:
如百度搜索按钮:
定位: driver.find_element(By.XPATH,"/html/body/div[2]/div[1]/div/div[1]/div/form/span[2]/input")