Python—从a<;中提取文本;td类=”类;“文本”&燃气轮机;需要此文本</td>;

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

我不熟悉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(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']
  • //:选择当前节点
  • 标记名:特定节点的标记名
  • @:选择属性
  • 属性:节点的属性名称
  • 值:属性的值
因此,在您的示例中,结果xpath必须如下所示

//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