Ich bin ein relativ neues in Python. Ich brauche einen Rat für ein Bioinformatik-Projekt. Es geht darum, bestimmte Enzym-IDs in andere umzuwandeln.Extrahieren bestimmter Informationen aus abgerufenen HTML-Code mit Python
Was ich schon tat und was funktioniert, ist der HTML-Code für eine Liste von IDs aus der Datenbank Rhea holen:
53 url2 = "http://www.rhea-db.org/reaction?id=16952"
54 f_xml2 = open("xml_tempfile2.txt", "w")
55
56 fetch2 = pycurl.Curl()
57 fetch2.setopt(fetch2.URL, url2)
58 fetch2.setopt(fetch.WRITEDATA, f_xml2)
59 fetch2.perform()
60 fetch2.close
So ist der HTML-Code in eine temporäre txt-Datei gespeichert wird (ich weiß, vielleicht nicht die eleganteste Art Sachen zu machen, aber es funktioniert für mich;).
Nun, was ich bin interessiert in dem folgenden Teil aus dem HTML ist:
<p>
<h3>Same participants, different directions</h3>
<div>
<a href="./reaction?id=16949"><span>RHEA:16949</span></a>
<span class="icon-question">myo-inositol + NAD(+) <?> scyllo-inosose + H(+) + NADH</span>
</div><div>
<a href="./reaction?id=16950"><span>RHEA:16950</span></a>
<span class="icon-arrow-right">myo-inositol + NAD(+) => scyllo-inosose + H(+) + NADH</span>
</div><div>
<a href="./reaction?id=16951"><span>RHEA:16951</span></a>
<span class="icon-arrow-left-1">scyllo-inosose + H(+) + NADH => myo-inositol + NAD(+)</span>
</div>
</p>
ich durch den Code gehen will, bis die Klasse „icon-arrow-right“ erreicht ist (dieser Ausdruck ist insofern einzigartig das HTML). Dann möchte ich die Information von "RHEA: XXXXXX" aus der obigen Zeile extrahieren. Also in diesem Beispiel möchte ich mit 16950 enden.
Gibt es eine einfache Möglichkeit, dies zu tun? Ich habe bereits mit HTMLparser experimentiert, konnte aber nicht so arbeiten, dass es nach einer bestimmten Klasse sucht und gibt mir dann die ID aus der Zeile oben.
Vielen Dank im Voraus!
Vielen Dank! Funktioniert perfekt! – fumarat
@ user310015 Also ich denke, find_previous_sinbling() in diesem Zusammenhang funktioniert, weil die RHEA: ID ist auch in ? – fumarat
@fumarat überhaupt nicht. Wie Sie sehen können, ist "RHEA: ID" in '' ['find_previous_sibling()'] (https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-previous-siblings-and-find -previous-sibling) gibt hier ein Element zurück, das dem Element mit der Klasse "icon-arrow-right" vorangestellt ist – styvane