Почему эта функция не предназначена для очистки таблицы с Selenium, работающей по назначению? - PullRequest
1 голос
/ 27 марта 2020

Я пытаюсь почистить таблицу на этом сайте с помощью Selenium (вам нужно создать быстрый аккаунт и войти в систему, чтобы увидеть его). Чтобы получить первый столбец, я использую следующий код, который работает:

first_column = driver.find_elements_by_xpath("//div[@class='top-line-table']//tbody//td[2]")
for i in first_column:
    print(i.text)

Prints:

Bernie Sanders
Joe Biden
Michael Bloomberg
Elizabeth Warren

Однако, когда я пытаюсь превратить его в функцию, я могу ввести в столбец, в который я хочу, он возвращает только первое значение, "Bern ie Sanders". Вот мой код для определения, вызова и печати функции:

def scrape_column (column):
raw = driver.find_elements_by_xpath(f"//div[@class='top-line-table']//tbody//td[{column}]")
for ii in raw:
        return[ii.text]

candidates = scrape_column("2")
print(candidates)

Я не знаю, почему она возвращает только первое значение, я перепробовала много вещей, и она все еще не работает , Помощь очень ценится!

1 Ответ

0 голосов
/ 27 марта 2020

Причина в том, что когда вы return, жизненный цикл вашей функции заканчивается. Он вернул значение и все. Если вы хотите получить список всех кандидатов в список, сделайте что-то вроде этого:

def scrape_column (column):
    names = []
    raw = driver.find_elements_by_xpath(f"//div[@class='top-line-table']//tbody//td[{column}]")
    for ii in raw:
        names.append(ii.text)
    return names

candidates = scrape_column("2")
print('\n'.join(candidates))

Посмотрите на join, это довольно аккуратный материал.

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