Я сохраняю некоторые файлы html локально, и я хочу удалить их из любой ненужной информации. Это по существу означает, что я хочу удалить все сценарии < > и < > теги и их соответствующее содержание.Python cache html file
Я использую селена WebBrowser, и я могу получить доступ исходный код страницы с чем-то вроде этого:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://somesite.com')
html = driver.page_source
У меня было три идеи:
Использование JQuery для устранения unncecessary теги, а затем доступ атрибут page_source для локального кэширования. Что-то вдоль:
driver.execute_script("""$('style, script').remove()""") cache(driver.page_source)
Но этот код не будет работать, потому что я не могу покалечить исходный код страницы внутри, потому что мне нужно место, чтобы быть цельным для дальнейшего взаимодействия с драйвером, например селен. + используйте lxml, чтобы проанализировать файл driver.page_source, а затем удалить всю нежелательную информацию. После этого вы получите доступ к модифицированному источнику страницы и локальному кэшу. В коде:
parsed = lxml.html.fromstring(driver.page_source)
for bad, worse in zip(parsed.xpath('//script'), parsed.xpath('//style')):
bad.getparent().remove(bad)
worse.getparent().remove(worse)
cache(parsed.text)
# Problem: parsed.text is empty :/ How can I access the modified source? Remember, I don't need no text_content()
+ Изменить и усечение источник непосредственно в WebDriver, а затем доступ к атрибуту page_source. Но нет никаких способов изменить dom в экземплярах webdriver.
Я думаю, что подход lxml является лучшим, потому что, независимо от того, как я пытаюсь обернуть голову вокруг проблемы, я не должен испортить экземпляр webdriver, так как мне нужно взаимодействовать с ним дальше. Я что-то пропустил с помощью lxml?
Приветствия
Большое спасибо, что работает прекрасно. –