首页 > 解决方案 > 如何使用 selenium 抓取网站上生成的数据?

问题描述

我正在实现一个 Python 代码,其中我需要生成一个 SHA 密钥。为此,我使用在线 SHA 生成器。我通过 selenium 发送输入(需要哈希的数据),它可以成功运行。但是,之后我无法获得生成的输出(文本字符串)。我使用 find_element_by_xpath 函数来获取这些数据,但它只返回一个空字符串。我不明白我做错了什么。有人能告诉我我该怎么做吗?或者如果有任何其他方法,除了使用 Selenium 来实现这一点?

我使用了以下代码:

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

def driver_init():

    driver = webdriver.Chrome(executable_path='chromedriver.exe')
    driver.wait=WebDriverWait(driver,5)
    return driver

def get_data(driver, val):

    driver.get('https://passwordsgenerator.net/sha1-hash-generator/')
    xpath='//*[@id="txt1"]'
    box=driver.find_element_by_xpath(xpath)
    box.send_keys(val)
    element=driver.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="txt2"]')))
    return element.text

driver=driver_init()
w=get_data(driver, '100011')

`

标签: pythonseleniumselenium-webdriverweb-scraping

解决方案


您没有看到该文本填充到您的变量的原因是因为它的值是由页面上运行的脚本设置的。您可以通过使用element.get_attribute('value')获取元素的当前值来获取该值。

不过需要注意的是:这些类型的哈希通常用于安全目的,除非您非常信任该网站,否则我建议使用本地解决方案,如 SSL(openSSL、密码学等)库来解决这些哈希,而不是通过网络发送请求。如果此站点的服务器发生问题或者它被恶意行为者接管,他们可以修改站点以将您的所有(以前的)安全数据发送给他们。


推荐阅读