需要配置的环境有Python、Chrome浏览器、Chromedrive驱动。
1、Python 环境
python下载网址:https://www.python.org/
2、chromedriver驱动
根据自己chrome浏览器的版本,下载对应的chromedriver驱动。
chromedriver下载网址:CNPM Binaries Mirror
查看chrome浏览器版本:
打开命令行cmd下载selenium:pip install selenium
3、vscode下载python
我用的vscode来运行py文件的,安装插件后,记得重启vscode。
4、实现一个小栗子:
创建一个test.py,用vscode打开。
下列代码实现以下效果:
1、进入百度
2、输入“B站”
3、点击B站链接进入B站官网
import os
import time
import pickle
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.by import By
# 百度网址
baidu_url = "https://www.baidu.com/"
# 固定写法
def InitChorm():
"""
这样不会被检测到是用的selenium
:return:
"""
options = ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)
driver = Chrome(options=options)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
return driver
# 定义Test类,等待mian执行
class Test:
# 一些初始化
def __init__(self):
self.driver = InitChorm() # 默认Chrome浏览器
# 打开浏览器
def open(self):
self.driver.get(baidu_url) # 打开百度
search_box = self.driver.find_element(By.XPATH, '//input[@id="kw"]') # XPATH定位到百度搜索框
search_box.send_keys("b站") # 输入搜索关键字
search_box.submit() # 执行搜索操作
# 等待搜索结果加载完成
time.sleep(2)
# 点击第一条搜索结果进入b站
search_results = self.driver.find_elements(By.XPATH, '//*[@id="1"]/div/div[1]/h3/a[1]') # XPATH定位到b站官网
if len(search_results) > 0:
print(search_results)
first_result = search_results[0] #search_results[0]表示通过使用find_elements()方法找到了所有搜索结果列表的元素,然后选择了第一个搜索结果
first_result.click()
# main函数
if __name__ == '__main__':
con = Test() # 执行Test类
con.open() # 打开浏览器
input("在控制台输入任意键关闭浏览器...")
con.driver.quit() # 关闭浏览器