如何使用 Selenium WebDriver 和 Python 提取元素内的文本?
How to extract the text within the element using Selenium WebDriver and Python?
抓取指定区域的文字
网站:https://www.kobo.com/tw/zh/ebook/NXUCYsE9cD6OWhvtdTqQQQ.
图片:
代码:
BookTitle = driver.find_elements_by_xpath('//p[@class="title product-field"]')
BookTitle[0].getWindowHandle()
HTML:
<span translate="no">大塊文化</span>
试试下面的代码。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver.get("https://www.kobo.com/tw/zh/ebook/NXUCYsE9cD6OWhvtdTqQQQ")
element=WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'a.description-anchor span[translate="no"]')))
print(element.text)
您也可以使用
driver.find_element_by_css_selector('span[translate="no"]')
CSS 选择器应该比 XPath 快
编辑 根据 DebanjanB 评论编辑 - 谢谢
你做错了:
BookTitle[0].getWindowHandle()
不应该在这里做任何事情
只需尝试:
driver.find_element_by_css_selector("a[class='description-anchor']>span").text
要从指定区域提取文本 大块文化,您需要为 visibility_of_element_located()
引入 WebDriverWait 并且您可以使用以下解决方案:
代码块:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument("--disable-extensions")
options.add_argument('disable-infobars')
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('https://www.kobo.com/tw/zh/ebook/NXUCYsE9cD6OWhvtdTqQQQ')
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//h2[text()='電子書詳細資料']//following::ul[1]//li/a[@class='description-anchor']/span"))).text)
driver.quit()
控制台输出:
大塊文化
抓取指定区域的文字
网站:https://www.kobo.com/tw/zh/ebook/NXUCYsE9cD6OWhvtdTqQQQ.
图片:
代码:
BookTitle = driver.find_elements_by_xpath('//p[@class="title product-field"]')
BookTitle[0].getWindowHandle()
HTML:
<span translate="no">大塊文化</span>
试试下面的代码。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver.get("https://www.kobo.com/tw/zh/ebook/NXUCYsE9cD6OWhvtdTqQQQ")
element=WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'a.description-anchor span[translate="no"]')))
print(element.text)
您也可以使用
driver.find_element_by_css_selector('span[translate="no"]')
CSS 选择器应该比 XPath 快
编辑 根据 DebanjanB 评论编辑 - 谢谢
你做错了:
BookTitle[0].getWindowHandle()
不应该在这里做任何事情
只需尝试:
driver.find_element_by_css_selector("a[class='description-anchor']>span").text
要从指定区域提取文本 大块文化,您需要为 visibility_of_element_located()
引入 WebDriverWait 并且您可以使用以下解决方案:
代码块:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC options = webdriver.ChromeOptions() options.add_argument("start-maximized") options.add_argument("--disable-extensions") options.add_argument('disable-infobars') driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe') driver.get('https://www.kobo.com/tw/zh/ebook/NXUCYsE9cD6OWhvtdTqQQQ') print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//h2[text()='電子書詳細資料']//following::ul[1]//li/a[@class='description-anchor']/span"))).text) driver.quit()
控制台输出:
大塊文化