我对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>
我想将 $ 3842.84M 文本提取到一个变量中。我尝试了许多在网上找到的不同解决方案,但是继续收到NoSuchElementException错误消息。任何帮助将不胜感激!!!
答案 0 :(得分:1)
在这种情况下,您可以按类名称或CSS扇区或XPath查找元素。
如果要使用XPath:
driver.find_element_by_xpath('//td[@class="company_sales"]').text
如果要使用CSS扇区,也可以:
driver.find_element_by_css_selector("td.company_sales").text
OR
driver.find_element_by_css_selector(".company_sales").text
或者如果您想使用类名:
driver.find_element_by_class_name("company_sales").text
祝你好运!
答案 1 :(得分:0)
XPath似乎有问题。通常,Xpath格式类似于。
Xpath=//tagname[@attribute='value']
因此,您情况下的结果xpath必须看起来像
。//td[@class="company_sales"]
答案 2 :(得分:0)
要提取并打印文本 $ 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