Python - извлечение текста из <td class = "text"> необходимого текста </td> - PullRequest
0 голосов
/ 26 января 2019

Я новичок в селене и питоне, поэтому моей общей целью является получение дохода для компании с веб-сайта 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. Любая помощь будет оценена !!!

Ответы [ 3 ]

0 голосов
/ 26 января 2019

В этом случае вы можете найти элемент по имени класса, 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

ИЛИ если вы хотите использовать имя класса:

driver.find_element_by_class_name("company_sales").text

Удачи!

0 голосов
/ 29 января 2019

Чтобы извлечь и распечатать текст $ 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
    
0 голосов
/ 26 января 2019

Это похоже на проблему с XPath. Обычно формат Xpath похож на

Xpath=//tagname[@attribute='value']
  • //: Выбрать текущий узел.
  • Tagname: тэг определенного узла.
  • @: Выбрать атрибут.
  • Атрибут: имя атрибута узла.
  • Значение: значение атрибута.

Итак, Resultant xpath в вашем случае должен выглядеть так.

//td[@class="company_sales"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...