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