Используя Python, я хотел бы получить полный код HTML от reddit.com для поиска строк, однако я могу получить только странную маленькую версию. Код в операторе if ниже не выполняется , но должен работать, потому что я знаю, что строка существует в источнике полной страницы (строка найдена как в инструментах разработчика браузера, так и в функции браузера «Просмотр источника страницы»):
driver = webdriver.Firefox()
driver.get('https://www.reddit.com')
driver.add_cookie({'name':'reddit_session', 'value':'###session cookie value goes here###', 'path':'/', 'domain':'reddit.com'})
driver.refresh() # refresh the page to apply the cookie
source_html = driver.page_source
if 'user account' in source_html:
print("String found.")
driver.close()
Вот sourceHTML
копия и вставка в файл. Его длина составляет 65 536 байт и не имеет смысла.
Что делает запись содержимого переменной в файл:
driver = webdriver.Firefox()
driver.get('https://www.reddit.com')
driver.add_cookie({'name':'reddit_session', 'value':'###session cookie value goes here###', 'path':'/', 'domain':'reddit.com'})
driver.refresh() # refresh the page to apply the cookie
source_html = driver.page_source
with open('page.html', 'w') as myfile:
myfile.write(source_html)
driver.close()
А вот 580 000 байтов HTML, которые, как я ожидаю, были записаны в файл.
Мне нужно иметь возможность искать в этом HTML в пределах Python и не создавать файл.
Я безуспешно пытался выполнить следующие действия:
- Во время отладки скопировал строку, возвращенную из
driver.page_source
, вставил ее в блокнот и сохранил в виде файла. html. - Использование BeautifulSoup для анализа переменной
sourceHtml
. - Выполнение Javascript для получения всего DOM:
getDOM = driver.execute_script('return document.documentElement.outerHTML')
- Использование
time.sleep(5)
для ожидания окончания страницы sh загрузка перед запуском driver.page_source
(хотя Webdriver все равно ждет полного ответа, прежде чем перезвонить).
Заранее большое спасибо.