python 如何让Selenium等到网站有任何文本

h6my8fg2  于 2023-06-20  发布在  Python
关注(0)|答案(1)|浏览(136)

我试图逃避'页面加载'的伎俩,一些网站用来避免抓取器。因此,我需要最简单的代码,以确保我等待适当的时间,然后才尝试检出抓取网站的HTML内容。我正在寻找的条件是"等到页面有"标题"或"元描述"或"关键字"或只是加载或等待等其他任何文本"我已经检查了几个小时这个简单的东西,但无济于事,似乎使用 selenium 是不那么容易,因为我想。

import undetected_chromedriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

options = Options()
options.add_argument('--ignore-ssl-errors=yes')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--incognito')
options.add_argument('--headless')

driver = undetected_chromedriver.Chrome(service=Service(ChromeDriverManager().install()), 
                            use_subprocess=True,
                            options=options)

# timeout = 5
# wait = WebDriverWait(driver, timeOut)
# wait.until("WHAT????")

web_link = "amazon.com"
driver.get(f"http://{web_link}")
driver.page_source

注意:我想实现这一壮举使用ExplicitWait而不是ImplicitWait,因为一些我想刮已经加载没有任何形式的刮刀保护。最好不要浪费时间。

tgabmvqs

tgabmvqs1#

要等到 Page Title 包含特定文本,您可以使用以下expected_conditions之一:

  • title_contains(title):检查标题是否包含区分大小写的子字符串的期望值。
WebDriverWait(driver, 10).until(EC.title_contains("partial_expected_page_title"))
  • title_is(title):检查页面标题的期望值。
WebDriverWait(driver, 10).until(EC.title_is("expected_page_title"))

*注意:需要添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

参考资料

您可以在以下内容中找到一些相关的详细讨论:

相关问题