Как перебрать таблицу и вывести результаты из первых 10 строк с помощью python и selenium webdriver? - PullRequest
0 голосов
/ 21 февраля 2019

Используя Selen Webdriver и Python, я могу найти ячейку поиска и поиска, чтобы вернуть результаты, однако я хочу напечатать результаты из первых 10 возвращенных строк (минус строка заголовка).

Сайт IЯ использую это: http://www.hoovers.com/company-information/company-search.html?term=simon, например, в качестве поискового запроса.

Я искал некоторое время и пробовал много вещей, включая xpaths и большинство ошибок.Это самое близкое, что я дошел до сих пор:

for row in mydriver.find_elements_by_class_name('cmp-company-directory'):
        cell = row.find_elements_by_tag_name("td")[0]
        print(cell.text)

Однако он возвращает только первую строку и не будет перебирать таблицу.Какие-нибудь советы?ТИА!

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Чтобы напечатать названия компаний , исключая строку заголовка, вы должны ввести WebDriverWait для visibility_of_all_elements_located, и вы можете использовать любое из следующих решений:

  • CSS_SELECTOR:

    print([company_name.get_attribute("innerHTML") for company_name in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.cmp-company-directory table td.company_name>a")))])
    
  • XPATH:

    print([company_name.get_attribute("innerHTML") for company_name in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='cmp-company-directory']//table//td[@class='company_name']/a")))])
    

Для печати первых 10 Названия компаний , за исключением строки заголовка, вы должны ввести WebDriverWait для visibility_of_all_elements_located, а затем вы должны использовать [:10], чтобы ограничить список 10 элементов, и вы можете использовать любое из следующих решений:

  • CSS_SELECTOR:

    print([company_name.text for company_name in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.cmp-company-directory table td.company_name>a")))[:10]])
    
  • XPATH:

    print([company_name.text for company_name in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='cmp-company-directory']//table//td[@class='company_name']/a")))[:10]])
    

Примечание : необходимо добавить следующий импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
0 голосов
/ 21 февраля 2019

Попробуйте это ниже Xpath, он пройдет через таблицу и напечатает первые 10 строк.

elements=driver.find_elements_by_xpath("//div[@class='clear data-table sortable-header dashed-table-tr alternate-rows']//tr/td")
counter=1
for element in elements:
    print(element.text)
    counter+=1
    if counter==50:
        break

OutPut:

Simon Property Group, Inc.
Indianapolis, IN, United States
$5538.64M
See Details

SIMON & SCHUSTER (UK) LIMITED
London, London, England
$60.39M
See Details

SIMON JERSEY GROUP LIMITED
Accrington, Lancashire, England

See Details

Simon Worldwide, Inc.
Irvine, CA, United States
$0.0M
See Details

Simon Property Group, L.P.
Indianapolis, IN, United States
$5538.64M
See Details

Günter Simon e.K. Inh. Carmen Simon
Ravensburg, Baden-Württemberg, Germany

See Details

Simon e Simon Servicos Odontologicos Ltda
Vere, Parana, Brazil

See Details

Simon Comercial e Industrial Ltda Em Recuperacao Judicial
Aparecida De Goiania, Goias, Brazil

See Details

Simon Levelt B.V.
Haarlem, Noord-Holland, The Netherlands

See Details

SIMON SAU
Barcelona, Barcelona, Spain
$115.95M
See Details

Если вы хотите напечатать только первые 10 строк названия компаниипопробуйте это.

elements=driver.find_elements_by_xpath("//div[@class='clear data-table sortable-header dashed-table-tr alternate-rows']//tr/td[@class='company_name']")
counter=0
for element in elements:
    print(element.text)
    counter+=1
    if counter==10:
        break

OutPut: -

Simon Property Group, Inc.
SIMON & SCHUSTER (UK) LIMITED
SIMON JERSEY GROUP LIMITED
Simon Worldwide, Inc.
Simon Property Group, L.P.
Günter Simon e.K. Inh. Carmen Simon
Simon e Simon Servicos Odontologicos Ltda
Simon Comercial e Industrial Ltda Em Recuperacao Judicial
Simon Levelt B.V.

Дайте мне знать, если это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...