python - 如何使用 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')
`
解决方案
您没有看到该文本填充到您的变量的原因是因为它的值是由页面上运行的脚本设置的。您可以通过使用element.get_attribute('value')
获取元素的当前值来获取该值。
不过需要注意的是:这些类型的哈希通常用于安全目的,除非您非常信任该网站,否则我建议使用本地解决方案,如 SSL(openSSL、密码学等)库来解决这些哈希,而不是通过网络发送请求。如果此站点的服务器发生问题或者它被恶意行为者接管,他们可以修改站点以将您的所有(以前的)安全数据发送给他们。
推荐阅读
- typo3 - 大文件的渲染类型输入链接,无需复制文件
- javascript - 将 .ics 文件提供给 webcal:// 而不是通过浏览器下载
- mysql - Mysql Sum 来自多维的数据
- angular - 如何根据语言更改 InputTextbox 标签?
- unit-testing - MSTest 中的 PublicForTests 注释
- ios - 问题找不到自动链接的框架“FirebaseMessaging”
- json - json 文件格式正确,因此 LUIS 可以读取数据
- angular - 每个组件的 Angular CanDeactivateGuard 通用
- php - 使用 [image] 类型的列插入并存储在表中的数据库文件中
- php - 在php foreach中循环一个字符串数组