Я использую Python / Selenium для отправки генетических последовательностей в онлайн-базу данных и хочу сохранить полную страницу результатов, которые я получаю.Ниже приведен код, который приводит меня к нужным результатам:
from selenium import webdriver
URL = 'https://blast.ncbi.nlm.nih.gov/Blast.cgi?PROGRAM=blastx&PAGE_TYPE=BlastSearch&LINK_LOC=blasthome'
SEQUENCE = 'CCTAAACTATAGAAGGACAGCTCAAACACAAAGTTACCTAAACTATAGAAGGACAGCTCAAACACAAAGTTACCTAAACTATAGAAGGACAGCTCAAACACAAAGTTACCTAAACTATAGAAGGACAGCTCAAACACAAAGTTACCTAAACTATAGAAGGACA' #'GAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGAGAAGA'
CHROME_WEBDRIVER_LOCATION = '/home/max/Downloads/chromedriver' # update this for your machine
# open page with selenium
# (first need to download Chrome webdriver, or a firefox webdriver, etc)
driver = webdriver.Chrome(executable_path=CHROME_WEBDRIVER_LOCATION)
driver.get(URL)
time.sleep(5)
# enter sequence into the query field and hit 'blast' button to search
seq_query_field = driver.find_element_by_id("seq")
seq_query_field.send_keys(SEQUENCE)
blast_button = driver.find_element_by_id("b1")
blast_button.click()
time.sleep(60)
На этом этапе у меня есть страница, на которой я могу вручную нажать «Сохранить как» и получить локальный файл (с соответствующей папкойресурсы image / js), которые позволяют мне просматривать всю возвращаемую страницу локально (за исключением содержимого, которое генерируется динамически при прокрутке вниз по странице, что нормально).Я предполагал, что будет простой способ имитировать эту функцию «сохранить как» в python / selenium, но не нашел ее.Код для сохранения страницы ниже просто сохраняет html и не оставляет мне локальный файл, который выглядит как в веб-браузере, с изображениями и т. Д.
content = driver.page_source
with open('webpage.html', 'w') as f:
f.write(content)
Я также нашел этот вопрос / ответ по SO , но принятый ответ просто вызывает поле «сохранить как» и не предоставляет способ щелкнуть по нему (как указывают два комментария)
Есть липростой способ «сохранить [полную страницу] как» с использованием Python?В идеале я бы предпочел ответ с использованием селена, поскольку селен делает процесс сканирования настолько простым, но я открыт для использования другой библиотеки, если есть лучший инструмент для этой работы.Или, может быть, мне просто нужно указать все изображения / таблицы, которые я хочу загрузить, в коде, и нет ярлыка для эмуляции щелчка правой кнопкой мыши на функции «сохранить как»?
ОБНОВЛЕНИЕ - ответьте на вопрос Джеймса'answer Итак, я запустил код Джеймса, чтобы сгенерировать page.html
(и связанные с ним файлы), и сравнил его с HTML-файлом, который я получил вручную, нажав "Сохранить как".page.html
, сохраненный с помощью сценария Джеймса, великолепен и имеет все, что мне нужно, но при открытии в браузере он также показывает много дополнительного форматирующего текста, который скрыт на странице сохранения вручную.См. Прикрепленный снимок экрана (страница, сохраненная вручную слева, страница, сохраненная сценарием, с дополнительным форматирующим текстом, показанным справа).![enter image description here](https://i.stack.imgur.com/k4poh.png)
Это особенно удивляет меня, поскольку необработанный HTML-код страницы, сохраненной сценарием Джеймса, указывает на то, что эти поля все еще должны быть скрыты.См., Например, приведенный ниже HTML-код, который в обоих файлах выглядит одинаково, но рассматриваемый текст отображается только на странице, отображаемой браузером, на странице, сохраненной сценарием Джеймса:
<p class="helpbox ui-ncbitoggler-slave ui-ncbitoggler" id="hlp1" aria-hidden="true">
These options control formatting of alignments in results pages. The
default is HTML, but other formats (including plain text) are available.
PSSM and PssmWithParameters are representations of Position Specific Scoring Matrices and are only available for PSI-BLAST.
The Advanced view option allows the database descriptions to be sorted by various indices in a table.
</p>
Любая идея, почему это такпроисходит?