使用selenium python查找有效报文通道

km0tfn4u  于 2023-01-17  发布在  Python
关注(0)|答案(1)|浏览(156)

你好早上好/晚上好!我想问,有没有一种方法来区分这两种类型的方式告诉那些通道不存在?我正在创建一个工具来查找电报上现有的通道。这里有一些例子。

当我尝试运行我的代码时,不存在的通道仍然算作现有通道。

下面是使用的代码,来区分这2种类型的方式电报告诉通道不存在。我用 selenium 和 chrome 驱动程序的帮助下找到现有的电报通道。

for ss in cli1:
        driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
        driver.maximize_window()
        driver.implicitly_wait(10)
        driver.get(f"https://t.me/{ss}")
        try:
            if WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, '/html/body/div[2]/div[2]/div/div/div[1]/div[2]/a/div'))):
                print(f'URL https://t.me/{ss} is not available')
                Not_Exist.append(ss)
            elif WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, '/html/body/div[2]/div[2]/div/div[2]/a'))):
                print(f'URL https://t.me/{ss} is not available')
                Not_Exist.append(ss)
        except:
            print(f'URL https://t.me/{ss} is valid')
            exists.append(ss)
        driver.quit()
        sleep(5)

是否有一种方法,对于一个不存在的电报信道仍然说没有可用,而不是使网站可用,但它根本没有任何信道。这里是链接的例子。不存在的网站1 https://t.me/minecraft现有的网站https://t.me/minecraftapkdownload不存在的网站2 https://telegram.org/
谢谢你的帮助!

dauxcl2d

dauxcl2d1#

在代码的try块中,进行以下更改

try:
        if WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSSSELECTOR, 'tgme_action_button_new shine'))):
            print(f'URL https://t.me/{ss} is valid')
            exists.append(ss)
            
    except:
        print(f'URL https://t.me/{ss} is not available')
        Not_Exist.append(ss)

我建议您使用由类名/ID等组成的路径。即使对GUI进行最小的更改,/html/body/div[2]/div[2]/div/div/div[1]/div[2]/a/div等路径也很容易引发错误
在上面的代码中,我假设如果通道有效,则显示View in Telegram按钮,而对于所有其它页面,则不显示此类按钮。
按钮的类是“tgme_action_button_new shine”
代码检查此按钮是否存在,如果存在,则将页面添加到有效列表,否则添加到无效列表

相关问题