如何通过selenium获取html head中的文本元素?
How to get text element in html head by selenium?
我正在尝试通过 selenium(Firefox 驱动程序)从此 link 获取 jpg 的文件名。如果我手动右键单击照片并下载它,文件名将是 1-002.jpg
当我尝试通过 Firefox 浏览 html 时,它显示 1-002.jpg 位于 <'head'> <'title'>部分。由于某些原因,无法在 chrome 上显示。
<Head>
<meta name="viewport" content="width=device-width; height=device-height;">
<link rel="stylesheet" href="resource://content-accessible/ImageDocument.css">
<link rel="stylesheet" href="resource://content-accessible/TopLevelImageDocument.css">
<link rel="stylesheet" href="chrome://global/skin/media/TopLevelImageDocument.css">
<title>1-002.jpg (JPEG Image, 1800 × 2546 pixels) — Scaled (40%)</title>
</Head>
但是,我无法获取文本。到目前为止,我的代码如下
driver.get(url)
file_name = driver.find_element_by_xpath('/html/head/title')
print(file_name)
我只能得到<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="384e7def-df66-4f06-9c3a-c5072c2d650f", element="7e0002d0-7bfb-4aed-8558-fdb9c25075d4")>
如果我用 file_name = driver.find_element_by_xpath('/html/head/title').text
替换它,它将 return 什么都没有。
所以我想问一下我怎样才能得到想要的文本。
谢谢。
首先,您必须在 HTMLDOM 中检查我们是否具有唯一条目:
如果我们在 HTML DOM
中有 unique 条目,请检查 dev tools
(Google chrome)。
检查步骤:
Press F12 in Chrome
-> 转到 element
部分 -> 执行 CTRL + F
-> 然后粘贴 xpath
并查看是否需要 element
正在 突出显示 与 1/1
匹配节点。
对于 firefox,请进行检查,步骤应保持不变。
如果 /html/head/title
是 1/1,则问题可能是延迟的原因。
硬编码睡眠(不推荐)
代码试用 1 :
time.sleep(5)
file_name = driver.find_element_by_xpath('/html/head/title').text
print(file_name)
代码试用 2:(推荐)
file_name = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/html/head/title"))).text
print(file_name)
您可以尝试的其他内容:
请致电.get_attribute('innerText')
或.get_attribute('innerHTML')
而不是 .text
,像这样:
与innerHTML
file_name = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/html/head/title"))).get_attribute('innerHTML')
print(file_name)
有innerText
file_name = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/html/head/title"))).text
print(file_name)get_attribute('innerText')
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
我正在尝试通过 selenium(Firefox 驱动程序)从此 link 获取 jpg 的文件名。如果我手动右键单击照片并下载它,文件名将是 1-002.jpg
当我尝试通过 Firefox 浏览 html 时,它显示 1-002.jpg 位于 <'head'> <'title'>部分。由于某些原因,无法在 chrome 上显示。
<Head>
<meta name="viewport" content="width=device-width; height=device-height;">
<link rel="stylesheet" href="resource://content-accessible/ImageDocument.css">
<link rel="stylesheet" href="resource://content-accessible/TopLevelImageDocument.css">
<link rel="stylesheet" href="chrome://global/skin/media/TopLevelImageDocument.css">
<title>1-002.jpg (JPEG Image, 1800 × 2546 pixels) — Scaled (40%)</title>
</Head>
但是,我无法获取文本。到目前为止,我的代码如下
driver.get(url)
file_name = driver.find_element_by_xpath('/html/head/title')
print(file_name)
我只能得到<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="384e7def-df66-4f06-9c3a-c5072c2d650f", element="7e0002d0-7bfb-4aed-8558-fdb9c25075d4")>
如果我用 file_name = driver.find_element_by_xpath('/html/head/title').text
替换它,它将 return 什么都没有。
所以我想问一下我怎样才能得到想要的文本。
谢谢。
首先,您必须在 HTMLDOM 中检查我们是否具有唯一条目:
如果我们在 HTML DOM
中有 unique 条目,请检查 dev tools
(Google chrome)。
检查步骤:
Press F12 in Chrome
-> 转到 element
部分 -> 执行 CTRL + F
-> 然后粘贴 xpath
并查看是否需要 element
正在 突出显示 与 1/1
匹配节点。
对于 firefox,请进行检查,步骤应保持不变。
如果 /html/head/title
是 1/1,则问题可能是延迟的原因。
硬编码睡眠(不推荐)
代码试用 1 :
time.sleep(5)
file_name = driver.find_element_by_xpath('/html/head/title').text
print(file_name)
代码试用 2:(推荐)
file_name = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/html/head/title"))).text
print(file_name)
您可以尝试的其他内容:
请致电.get_attribute('innerText')
或.get_attribute('innerHTML')
而不是 .text
,像这样:
与innerHTML
file_name = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/html/head/title"))).get_attribute('innerHTML')
print(file_name)
有innerText
file_name = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "/html/head/title"))).text
print(file_name)get_attribute('innerText')
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC