【问题标题】:How to use selenium to scrape data that is generated on the website?如何使用 selenium 抓取网站上生成的数据?
【发布时间】:2020-10-27 00:11:23
【问题描述】:

我正在实现一个 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')

`

【问题讨论】:

标签: python selenium selenium-webdriver web-scraping


【解决方案1】:

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

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

【讨论】:

  • 成功了,非常感谢!另外,感谢您的建议,实际上我正在开发一个项目,我必须为图像生成 SHA 哈希,所以我并没有真正将敏感信息传递给该站点。我确实尝试实现自己的 SHA1 生成代码,但是,它无法将非常大的字符串作为输入。所以我认为这将是最方便的方式。
猜你喜欢
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
相关资源
最近更新 更多