TypeError: объект 'str' не вызывается при использовании driver.page_source (). Text - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь извлечь таблицы с веб-сайта на несколько дат. Я использую следующий код для этого.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options


CHROMEDRIVER_PATH = 'C:/Users/asus/Downloads/chromedriver/chromedriver.exe'

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)

URL = 'URL'
driver.get(URL)

driver.find_element_by_id('calender1').click()

driver.find_element_by_css_selector(css_slctr).click() #css_selector for date
driver.find_element_by_id('show').click()
driver.page_source().text
# # print(html)

Но приведенный выше код дает TypeError следующим образом.

TypeError                                 Traceback (most recent call last)
<ipython-input-35-a6ffd4caf5cf> in <module>
      9 
     10 # driver.page_source().text
---> 11 driver.page_source().text
     12 # # print(html)
TypeError: 'str' object is not callable

Я пробовал те же селекторы элементов в Rselenium, и я был возможность извлечь нужную таблицу. Поскольку я новичок в Python, я не уверен, что означает эта ошибка! В соответствии с тем, что я прочитал здесь и здесь , мне кажется, что эта ошибка возникает, когда мы пытаемся переопределить встроенную функцию (пожалуйста, исправьте меня, если я неправильно понял). Но я считаю, что я не переопределял здесь встроенную функцию. Так почему я получаю эту ошибку? И как я могу решить это?

Ответы [ 2 ]

0 голосов
/ 27 января 2020

page_source это свойство, а не функция. Возвращает str, поэтому нет необходимости вызывать text

source = driver.page_source
0 голосов
/ 27 января 2020

page_source является свойством экземпляра WebDriver . Таким образом, вы не можете вызвать page_source как функцию. Вы пробовали:

driver.page_source()

Следовательно, вы видите ошибку:

---> 11 driver.page_source().text
TypeError: 'str' object is not callable

Решение

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

  • Распечатайте page_source:

    print(driver.page_source)
    
  • Сохраните page_source в переменной и напечатайте:

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