Python - 从<td class = "text">需要此文本</td>中提取文本
Python - Extracting Text from a <td class = "text">Need This Text</td>
我是 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">42.84M</td>
我想将 $3842.84M 文本提取到一个变量中。我尝试了很多在网上找到的不同解决方案,但一直收到 NoSuchElementException 错误消息。任何帮助将不胜感激!!!
看起来像是 XPath 的问题。一般Xpath格式是这样的。
Xpath=//tagname[@attribute='value']
- // : Select 当前节点。
- 标记名:特定节点的标记名。
- @: Select 属性。
- Attribute:节点的属性名称。
- 值:属性的值。
因此,您的情况下的结果 xpath 必须看起来像。
//td[@class="company_sales"]
在这种情况下,您可以通过 class 名称或 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_css_selector(".company_sales").text
或者如果你想使用 class 名称:
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"))
控制台输出:
42.84M
我是 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">42.84M</td>
我想将 $3842.84M 文本提取到一个变量中。我尝试了很多在网上找到的不同解决方案,但一直收到 NoSuchElementException 错误消息。任何帮助将不胜感激!!!
看起来像是 XPath 的问题。一般Xpath格式是这样的。
Xpath=//tagname[@attribute='value']
- // : Select 当前节点。
- 标记名:特定节点的标记名。
- @: Select 属性。
- Attribute:节点的属性名称。
- 值:属性的值。
因此,您的情况下的结果 xpath 必须看起来像。
//td[@class="company_sales"]
在这种情况下,您可以通过 class 名称或 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_css_selector(".company_sales").text
或者如果你想使用 class 名称:
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"))
控制台输出:
42.84M