Я гуглил об этом весь день, не найдя ответа, поэтому заранее извиняюсь, если на это уже ответ.
Я пытаюсь получить весь видимый текст с большого количества разных веб-сайтов. Причина в том, что я хочу обработать текст, чтобы в конечном итоге классифицировать веб-сайты.
После пары дней исследований я решил, что 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