优化一下代码使其适用于低版本或火狐的WebDriver:if __name__ == __main__ # 读取配置文件 keyword_info = try with openkeyword-settingyaml r encoding=utf-8 as f data = yamlloadfread Loader=yamlFullLoade
import yaml import time from selenium import webdriver
if name == 'main': # 读取配置文件 keyword_info = [] try: with open('keyword-setting.yaml', 'r', encoding='utf-8') as f: data = yaml.load(f.read()) for item in data: if data[item]['enabled']: keyword_info.append(data[item]) except Exception as e: print('加载配置文件失败') exit(e)
# 设置浏览器
options = webdriver.ChromeOptions()
options.add_argument('disable-infobars')
options.add_argument('--disable-extensions')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=options)
for keyword in keyword_info:
# 搜索关键字
driver.get('https://www.baidu.com/')
search_input = driver.find_element_by_id('kw')
search_input.send_keys(keyword['keyword'])
search_input.submit()
# 执行网页标识js代码
js_script = """
let domainList = my_domains;
let currentDomain = null;
let a = null;
let range = my_range;
// 获取结果
let container = document.querySelectorAll(".c-container");
if(container.length == 0){
container = document.querySelectorAll(".results > div");
if(container.length == 0){
container = document.querySelectorAll(".result > .res-list");
if(container.length == 0){
container = document.querySelectorAll(".b_algo");
}
}
}
outerLoop:for (let item of container) {
if(!item.classList.contains("new-pmd")){
if(!item.classList.contains("vrwrap")){
if(!item.classList.contains("rb")){
if(!item.classList.contains("res-list")){
if(!item.classList.contains("b_algo")){
continue
}
}
}
}
}
// 获取结果域名
currentDomain = item.querySelector(".c-color-gray");
if(currentDomain == null) {
currentDomain = item.querySelector(".citeurl");
if(currentDomain == null){
currentDomain = item.querySelector(".fb");
if(currentDomain == null){
currentDomain = item.querySelector(".g-linkinfo");
if (currentDomain == null){
currentDomain = item.querySelector(".b_attribution")
}
}
}
}
for (domain of domainList) {
if (currentDomain != null && currentDomain != undefined && currentDomain.innerText.indexOf(domain) >= 0 && currentDomain.innerText.indexOf("广告") < 0 && currentDomain.innerText.indexOf("百度") < 0) { // 去除广告
// 排名
let div = document.createElement("div")
div.innerText = "排名:" + range
div.style.position = "absolute"
div.style.left = item.getBoundingClientRect().left - 90 + "px"
div.style.top = item.getBoundingClientRect().top + "px"
div.style.border = "5px #f00 solid"
div.style.padding = "6px"
div.style.fontWeight = "bold"
div.style.fontSize = "17px"
document.getElementsByTagName("body")[0].appendChild(div)
// 边框
item.style.border = "5px #f00 solid";
break outerLoop;
}
}
}
// 删除必应搜索时左边的浮窗
let el = document.querySelector("#textDeeplinksWidgetContainer");
if(el != undefined || el != null){
el.remove();
}
"""
driver.execute_script(js_script, keyword['domain'], keyword['range'])
# 等待结果页面加载完成
time.sleep(3)
# 关闭浏览器
driver.quit()
原文地址: https://www.cveoy.top/t/topic/byPG 著作权归作者所有。请勿转载和采集!