我正在使用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)
Run Code Online (Sandbox Code Playgroud)
那时我有一个页面,我可以手动点击"另存为",并获得一个本地文件(带有相应的image/js资产文件夹),让我可以在本地查看整个返回的页面(减去从中动态生成的内容)向下滚动页面,这很好).我假设有一种简单的方法可以模仿python/selenium中的"另存为"功能,但还没有找到.保存下面页面的代码只保存html,并没有给我留下看起来像在Web浏览器中看到的本地文件,图像等.
content = driver.page_source
with open('webpage.html', 'w') as f:
f.write(content)
Run Code Online (Sandbox Code Playgroud)
我也在SO上找到了这个问题/答案,但是接受的答案只是打开了"另存为"框,并没有提供点击它的方法(正如两位评论者指出的那样) …
我已经阅读了很多关于网络抓取的答案,谈论了BeautifulSoup,Scrapy等来执行网络抓取.
有没有办法相当于从网络浏览器保存页面的来源?
也就是说,Python中有没有一种方法可以将它指向一个网站,然后通过标准的Python模块将页面源保存到文本文件中?
这是我到达的地方:
import urllib
f = open('webpage.txt', 'w')
html = urllib.urlopen("http://www.somewebpage.com")
#somehow save the web page source
f.close()
Run Code Online (Sandbox Code Playgroud)
我不太了解 - 但是寻找代码来实际拉取页面的来源以便我可以编写它.我收集到urlopen只是建立联系.
也许有一个readlines()等效于读取网页的行?