为了账号安全,请及时绑定邮箱和手机立即绑定

使用 python/selenium 保存完整的网页(包括 css、图像)

使用 python/selenium 保存完整的网页(包括 css、图像)

LEATH 2021-09-14 15:58:46
我正在使用 Python/Selenium 将基因序列提交到在线数据库,并希望保存我返回的整页结果。下面是让我得到我想要的结果的代码:from selenium import webdriverURL = '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 searchseq_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)那时我有一个页面,我可以手动单击“另存为”,并获取一个本地文件(带有相应的图像/js 资产文件夹),让我可以在本地查看整个返回的页面(减去动态生成的内容)向下滚动页面,这很好)。我认为有一种简单的方法可以在 python/selenium 中模拟这个“另存为”函数,但还没有找到。下面保存页面的代码只保存了 html,并没有给我留下一个本地文件,它看起来像在 Web 浏览器中那样,带有图像等。content = driver.page_sourcewith open('webpage.html', 'w') as f:    f.write(content)我也在SO 上找到了这个问题/答案,但接受的答案只是显示了“另存为”框,并没有提供点击它的方法(正如两位评论者指出的那样)有没有一种简单的方法可以使用python“将[整页]另存为”?理想情况下,我更喜欢使用 selenium 的答案,因为 selenium 使爬行部分变得如此简单,但如果有更好的工具来完成这项工作,我愿意使用另一个库。或者我可能只需要在代码中指定我想要下载的所有图像/表格,并且没有模拟右键单击“另存为”功能的快捷方式?更新 - 对 James 回答的跟进问题 所以我运行 James 的代码来生成一个page.html(和相关文件)并将它与我通过手动单击另存为获得的 html 文件进行比较。在page.html通过詹姆斯的脚本保存的是伟大的,有我需要的一切,但在浏览器中打开时,它也说明了很多这是隐藏在手动save'd页额外的格式文本。请参阅附加的屏幕截图(左侧手动保存的页面,右侧显示带有额外格式文本的脚本保存页面)。
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 946 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信