首页 > 解决方案 > 无法解析网页中的某些文本

问题描述

我在 python 中编写了一个脚本,使用 selenium 从网页中抓取一些文本。我想在填写输入框时生成的文本。我的脚本可以以正确的方式填写并且可以填充值。但是,它无法解析文本。我该怎么做?

这是我迄今为止尝试过的:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get("http://dev.delshlearning.com.au/test.php")

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"#AM"))).send_keys("`(2(3^5-sqrt(3)))/2`",Keys.RETURN)

item = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"#MQ"))).text
print(item)
driver.quit()

send_keys()参数已在脚本中填写以供您考虑。

标签: pythonpython-3.xseleniumselenium-webdriverweb-scraping

解决方案


它将文本值存储在属性中value。这应该有效:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get("http://dev.delshlearning.com.au/test.php")

# I changed your locater to ID since it's a little more clear
wait.until(EC.visibility_of_element_located((By.ID,"AM"))).send_keys("`(2(3^5-sqrt(3)))/2`",Keys.RETURN)
item = wait.until(EC.visibility_of_element_located((By.ID,"MQ"))).get_attribute('value')
print(item)
driver.quit()

我通过转到元素的属性找到它,如下所示: 在此处输入图像描述


推荐阅读