Further inspecting the source code of the downloaded page, I found the following:
<li id="nav-sequences"
class="module-load transcript"
wname="sequences"
href="/rest/widget/transcript/K06C4.12/sequences">
<span class="ui-icon ui-icon-close module-close" wname="sequences"
</span>
Sequences
</li>
This suggested me to have a look at http://www.wormbase.org/rest/widget/transcript/K06C4.12/sequences and I obtained a page containing the elements found in the DOM inspector.
This can be parsed, for instance using the bs4
python module:
# To get the page
import requests
# To parse the page content
from bs4 import BeautifulSoup
# To get this into Biopython
from io import StringIO
from Bio import SeqIO
rest_template = "http://www.wormbase.org/rest/widget/transcript/{transcript_id}/sequences"
rest = rest_template.format(transcript_id="K06C4.12")
# This did not work with "html.parser"
soup = BeautifulSoup(requests.get(rest).text, "html5lib").body
def generate_fasta(soup):
for div in soup.find_all("div"):
if "ui-helper-hidden" in div["class"]:
if div["id"] == "content":
fasta = SeqIO.read(StringIO(next(div.children)text), "fasta")
fasta.id = fasta.description.replace(" ", "_")
yield (fasta.id, fasta)
records_dict = dict(generate_fasta(soup))
print(records_dict['K06C4.12_spliced_+_UTR'])
print(records_dict['conceptual_translation'])
Output:
ID: K06C4.12_spliced_+_UTR
Name: K06C4.12
Description: K06C4.12 spliced + UTR
Number of features: 0
Seq('ATGGCCCCACCAAAGCCGTCTGCTAAAGGAGCAAAGAAAGCCGCCAAGACCGTC...TAA', SingleLetterAlphabet())
ID: conceptual_translation
Name: conceptual
Description: conceptual translation
Number of features: 0
Seq('MAPPKPSAKGAKKAAKTVTKPKDGKKRRHARKESYSVYIYRVLKQVHPDTGVSS...SK*', SingleLetterAlphabet())