如何从html文件解析文本
问题描述:
import urllib2
import nltk
from HTMLParser import HTMLParser
from bs4 import BeautifulSoup
l = """<TR><TD><small style=font-family:courier> >M. tuberculosis H37Rv|Rv3676|crp<br />VDEILARAGIFQGVEPSAIAALTKQLQPVDFPRGHTVFAEGEPGDRLYIIISGKVKIGRR<br />APDGRENLLTIMGPSDMFGELSIFDPGPRTSSATTITEVRAVSMDRDALRSWIADRPEIS<br />EQLLRVLARRLRRTNNNLADLIFTDVPGRVAKQLLQLAQRFGTQEGGALRVTHDLTQEEI<br />AQLVGASRETVNKALADFAHRGWIRLEGKSVLISDSERLARRAR<br /></small><TR><td><b><big>Blastp: <a href="http://tuberculist.epfl.ch/blast_output/Rv3676.fasta.out"> Pre-computed results</a></big></b><TR><td><b><big>TransMembrane prediction using Hidden Markov Models: <a href="http://tuberculist.epfl.ch/tmhmm/Rv3676.html"> TMHMM</a></big></b><base target="_blank"/><TR><td><b><big>Genomic sequence</big></b><br /><br /><form action="dnaseq.php" method="get">"""
print l
我有一个HTML行,并且想要提取嵌入到HTML标记中的文本。我已经尝试过所有可用的方法,但他们不适合我的情况。如何从html文件解析文本
我该怎么办呢?
预期的输出应该是:
分枝杆菌| Rv3676 | CRP VDEILARAGIFQGVEPSAIAALTKQLQPVDFPRGHTVFAEGEPGDRLYIIISGKVKIGRRAPDGRENLLTIMGPSDMFGELSIFDPGPRTSSATTITEVRAVSMDRDALRSWIADRPEISEQLLRVLARRLRRTNNNLADLIFTDVPGRVAKQLLQLAQRFGTQEGGALRVTHDLTQEEIAQLVGASRETVNKALADFAHRGWIRLEGKSVLISDSERLARRAR
答
我注意到你导入BeautifulSoup,所以你可以使用BeautifulSoup来帮助你提取这些信息。
soup = BeautifulSoup(l,"html.parser")
print soup.get_text()
我试着和它的工作,但在过去标签的句子也将被提取,你如果需要削减的结果。
答
try:
from BeautifulSoup import BeautifulSoup
except ImportError:
from bs4 import BeautifulSoup
html = BeautifulSoup(l)
small = html.find_all('small')
print (small.get_text())
这得到小标签,并在它打印出的所有文字
答
我与这不适合我的工作,因为它是生产无格式的版本,所以我已经决定BeautifulSoup试着写下代码我的自我和工作非常好,并且生产我想要的东西。
import urllib2
proxy = urllib2.ProxyHandler({'http': 'http://******************'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
res = urllib2.urlopen('http://tuberculist.epfl.ch/quicksearch.php?gene+name=Rv3676')
html = res.readlines()
for l in html:
if "Genomic sequence" in l:
l = l.split("</small>")[0]
l = l.split("<br />")
header = l[0]
sequence = l[1:]
print "".join([">", header.split(">")[4]])
print "".join(sequence)
输出
>M. tuberculosis H37Rv|Rv3676|crp
VDEILARAGIFQGVEPSAIAALTKQLQPVDFPRGHTVFAEGEPGDRLYIIISGKVKIGRRAPDGRENLLTIMGPSDMFGELSIFDPGPRTSSATTITEVRAVSMDRDALRSWIADRPEISEQLLRVLARRLRRTNNNLADLIFTDVPGRVAKQLLQLAQRFGTQEGGALRVTHDLTQEEIAQLVGASRETVNKALADFAHRGWIRLEGKSVLISDSERLARRAR
你会发现你正在尝试做的很好的例子:https://www.crummy.com/software/BeautifulSoup/bs4/doc/ – dima