Python—从a<;中提取文本;td类=”类;“文本”&燃气轮机;需要此文本</td>;
我不熟悉selenium和python,所以我的总体目标是从网站Hoovers中获取公司的收入价值 当前代码:Python—从a<;中提取文本;td类=”类;“文本”&燃气轮机;需要此文本</td>;,python,selenium,xpath,web-scraping,webdriverwait,Python,Selenium,Xpath,Web Scraping,Webdriverwait,我不熟悉selenium和python,所以我的总体目标是从网站Hoovers中获取公司的收入价值 当前代码: company = 'Trelleborg' page = 'https://hoovers.com/company-information/cs.html?term=' + company driver.get(page) r = driver.find_element_by_xpath('//td/font[@class="company_sales"]').text print
company = 'Trelleborg'
page = 'https://hoovers.com/company-information/cs.html?term=' + company
driver.get(page)
r = driver.find_element_by_xpath('//td/font[@class="company_sales"]').text
print(r)
所需收入的HTML
<td class="company_name">
<a href="/company-information/cs/company-
profile.trelleborg_ab.a545a8005aced58d.html">
Trelleborg AB</a>
</td>
<td class="company_location">Trelleborg, Skåne, Sweden</td>
<td class="company_sales">$3842.84M</td>
特雷勒堡,瑞典斯科涅
384284万美元
我想将384284万美元的文本提取到一个变量中。我在网上找到了许多不同的解决方案,但一直收到NoTouchElementException错误消息。任何帮助都将不胜感激 这似乎是XPath的问题。通常Xpath格式类似于
Xpath=//tagname[@attribute='value']
- //:选择当前节点李>
- 标记名:特定节点的标记名
- @:选择属性
- 属性:节点的属性名称
- 值:属性的值
//td[@class="company_sales"]
在本例中,您可以按类名、CSS扇区或XPath查找元素 如果要使用XPath:
driver.find_element_by_xpath('//td[@class="company_sales"]').text
或者,如果要使用CSS扇区:
driver.find_element_by_css_selector("td.company_sales").text
或
或者,如果要使用类名:
driver.find_element_by_class_name("company_sales").text
祝你好运 要提取和打印文本,$3842.84M您需要诱导WebDriverWait以获得所需的元素可见性,您可以使用以下解决方案:
- 代码块:
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 company = 'Trelleborg' driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe') page = 'https://hoovers.com/company-information/cs.html?term=' + company driver.get(page) print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='cmp-company-directory']//tbody//td/a[contains(., '"+company +"')]//following::td[2]"))).get_attribute("innerHTML"))
- 控制台输出:
$3842.84M
//td[@class=“company\u sales”]
,您的代码段驱动程序中没有font
元素。请按\u class\u名称(“company\u sales”)查找\u元素.text我尝试了这些解决方案,但都输出了一个错误:没有这样的元素:无法定位元素。它应该可以工作。我已经在chrome浏览器中测试了这段代码,效果非常好。如果您愿意,我可以与您共享代码。您是如何获得XPATH的?@KenPen我没有从任何地方获得XPATH,而是根据您的要求构建的。
$3842.84M