我试图逃避'页面加载'的伎俩,一些网站用来避免抓取器。因此,我需要最简单的代码,以确保我等待适当的时间,然后才尝试检出抓取网站的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,因为一些我想刮已经加载没有任何形式的刮刀保护。最好不要浪费时间。
1条答案
按热度按时间tgabmvqs1#
要等到 Page Title 包含特定文本,您可以使用以下expected_conditions之一:
title_contains(title)
:检查标题是否包含区分大小写的子字符串的期望值。title_is(title)
:检查页面标题的期望值。*注意:需要添加以下导入:
参考资料
您可以在以下内容中找到一些相关的详细讨论: