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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录