2016-04-16 5 views
1

私は比較的新しいpythonです。私はバイオインフォマティクスプロジェクトのアドバイスが必要です。特定の酵素IDを他のものに変換することです。Pythonを使用して取得したHTMLコードから特定の情報を抽出する

は、レアデータベースからIDのリストのHTMLコードをフェッチ私はすでにやったし、どのような作品ですので、HTMLコードは、一時txtファイルに保存され

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 

(私は多分、知っていますものをする最もエレガントな方法ではなく、それは私のために働く;)。

が今何を私が興味を持っていますが、次のHTMLからの一部です:私はクラス「のアイコン矢印右に」到達するまでコードを通過したい

 <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(+) &lt;?&gt; 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(+) =&gt; 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 =&gt; myo-inositol + NAD(+)</span> 
      </div> 
     </p> 

(この表現はでユニークですHTML)。次に、上記の行から「RHEA:XXXXXX」の情報を抽出します。この例では、16950で終わりたいと思います。

これを行う簡単な方法はありますか?私は既にHTMLparserを試しましたが、特定のクラスを探して、上の行からIDを取得する方法で動作させることができませんでした。

ありがとうございます!

答えて

1

これを行うには、BeautifulSoupのようなHTMLパーサーを使用することができます。

>>> from bs4 import BeautifulSoup 
>>> html = """ <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(+) &lt;?&gt; 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(+) =&gt; 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 =&gt; myo-inositol + NAD(+)</span> 
...    </div> 
...   </p>""" 
>>> soup = BeautifulSoup(html, 'html.parser') 
>>> soup.find('span', class_='icon-arrow-right').find_previous_sibling().get_text() 
'RHEA:16950' 
+0

はどうもありがとうございました!完璧に動作します! – fumarat

+0

@ user310015 RHEA:IDもにあるので、このコンテキストでのfind_previous_sinbling()はうまくいくと思いますか? – fumarat

関連する問題