我一直在尝试使用 selenium 来抓取整个网页。我希望其中至少有少数是 spa 的,例如 Angular、React、Vue,所以这就是我使用 Selenium 的原因。
我需要下载整个页面(如果某些内容由于没有向下滚动而没有从延迟加载中加载,那很好)。我尝试设置 time.sleep() 延迟,但没有奏效。获得页面后,我希望对其进行哈希处理并将其存储在数据库中以供稍后比较并检查内容是否已更改。目前哈希每次都不同,这是因为 selenium 没有下载整个页面,每次都会丢失不同的部分数量。我已经在几个网页上证实了这一点,而不仅仅是一个单一的网页。
我可能还有 1000 多个网页要手动浏览,只是获取所有链接,所以我没有时间在它们上找到一个元素以确保它已加载。
这个过程需要多长时间并不重要。如果它需要 1 个多小时,就这样吧,速度并不重要,只有准确性。
如果您有其他想法,也请分享。
我的司机声明
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
driverPath = '/usr/lib/chromium-browser/chromedriver'
def create_web_driver():
options = webdriver.ChromeOptions()
options.add_argument('headless')
# set the window size
options.add_argument('window-size=1200x600')
# try to initalize the driver
try:
driver = webdriver.Chrome(executable_path=driverPath, chrome_options=options)
except WebDriverException:
print("failed to start driver at path: " + driverPath)
return driver
我的网址调用我的超时 = 20
driver.get(url)
time.sleep(timeout)
content = driver.page_source
content = content.encode('utf-8')
hashed_content = hashlib.sha512(content).hexdigest()
^ 每次在此处获取不同的哈希值,因为相同的 url 不会产生相同的网页