Получение всего видимого текста с веб-страницы с помощью Selenium

Я гуглил об этом весь день, не найдя ответа, поэтому заранее извиняюсь, если на это уже ответ.

Я пытаюсь получить весь видимый текст с большого количества разных веб-сайтов. Причина в том, что я хочу обработать текст, чтобы в конечном итоге классифицировать веб-сайты.

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

from selenium import webdriver
import codecs

filen = codecs.open('outoput.txt', encoding='utf-8', mode='w+')

driver = webdriver.Firefox()

driver.get("http://www.examplepage.com")

allelements = driver.find_elements_by_xpath("//*")

ferdigtxt = []

for i in allelements:

      if i.text in ferdigtxt:
          pass
  else:
         ferdigtxt.append(i.text)
         filen.writelines(i.text)

filen.close()

driver.quit()

Условие if внутри цикла for является попыткой устраняет проблему получения одного и того же текста несколько раз - однако это не так, а работает только на некоторых веб-страницах, как запланировано. (это также делает сценарий НАМНОГО медленнее)

Я предполагаю, что причина моей проблемы в том, что при запросе внутреннего текста элемента я также получаю внутренний текст элементов, вложенных внутри рассматриваемого элемента .

Есть ли способ обойти это? Есть ли какой-то главный элемент, внутренний текст которого я беру? Или совершенно другим способом, который позволил бы мне достичь своей цели? Любая помощь будет принята с благодарностью, так как у меня нет идей для этого.

Изменить: я использовал Selenium, а не Mechanize and Beautiful Soup, потому что мне нужен текст, представленный на JavaScript

11
задан Code Jockey 31 October 2011 в 17:21
поделиться