Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在前标记Python之间解析_Python_Html_Parsing_Beautifulsoup_Pre - Fatal编程技术网

在前标记Python之间解析

在前标记Python之间解析,python,html,parsing,beautifulsoup,pre,Python,Html,Parsing,Beautifulsoup,Pre,我正试图使用以下代码使用Python在PRE标记之间进行解析 s = br.open(base_url+str(string)) u = br.geturl() seq = br.open(u) blat = BeautifulSoup(seq) for res in blat.find('pre').findChildren(): seq = res.string print seq 来自以下HTML源代码: <PRE><TT>

我正试图使用以下代码使用Python在PRE标记之间进行解析

s = br.open(base_url+str(string))
u = br.geturl()
seq = br.open(u)
blat = BeautifulSoup(seq)    
for res in blat.find('pre').findChildren():
        seq = res.string
        print seq
来自以下HTML源代码:

<PRE><TT>
<span style='color:#22CCEE;'>T</span><span style='color:#3300FF;'>AAAAGATGA</span> <span style='color:#3300FF;'>AGTTTCTATC</span> <span style='color:#3300FF;'>ATCCAAA</span>aa<span style='color:#3300FF;'>A</span> <span style='color:#3300FF;'>TGGGCTACAG</span> <span style='color:#3300FF;'>AAAC</span><span style='color:#22CCEE;'>C</span></TT></PRE>
<HR ALIGN="CENTER"><H4><A NAME=genomic></A>Genomic chr17 (reverse strand):</H4>
<PRE><TT>
tacatttttc tctaactgca aacataatgt tttcccttgt attttacaga  41256278
tgcaaacagc tataattttg caaaaaagga aaataactct cctgaacatc  41256228
<A NAME=1></A><span style='color:#22CCEE;'>T</span><span style='color:#3300FF;'>AAAAGATGA</span> <span style='color:#3300FF;'>AGTTTCTATC</span> <span style='color:#3300FF;'>ATCCAAA</span>gt<span style='color:#3300FF;'>A</span> <span style='color:#3300FF;'>TGGGCTACAG</span> <span style='color:#3300FF;'>AAAC</span><span style='color:#22CCEE;'>C</span>gtgcc  41256178
aaaagacttc tacagagtga acccgaaaat ccttccttgg taaaaccatt  41256128
tgttttcttc ttcttcttct tcttcttttc tttttttttt ctttt</TT></PRE>
<HR ALIGN="CENTER"><H4><A NAME=ali></A>Side by Side Alignment</H4>
<PRE><TT>
00000001 taaaagatgaagtttctatcatccaaaaaatgggctacagaaacc 00000045
<<<<<<<< |||||||||||||||||||||||||||  |||||||||||||||| <<<<<<<<
41256227 taaaagatgaagtttctatcatccaaagtatgggctacagaaacc 41256183

</TT></PRE>
您可以使用“获取最后结果”命令:

from bs4 import BeautifulSoup

soup = BeautifulSoup(open('../index.html'), 'html5lib')

pre = soup.find_all('pre')[-1]
print pre.text.strip()
其中
index.html
包含您提供的html

它打印:

00000001 taaaagatgaagtttctatcatccaaaaaatgggctacagaaacc 00000045
<<<<<<<< ||||||||||||||||||||||||||| |||||||||||||||| <<<<<<<<
41256227 taaaagatgaagtttctatcatccaaagtatgggctacagaaacc 41256183

你应该使用一个HTML解析器来解析HTML,比如@DavidRobinson:我很确定他使用的是某种HTML解析器;如果
blat
只是一个字符串,而不是树/汤/等对象,
blat.find('pre').findChildren()
显然不起作用,因为字符串没有
findChildren
方法,你必须告诉我们你实际使用的是哪个库,而不是让我们猜测并可能给你一个无用的答案。我一直在使用BeautifulSoup和mechanize。请查找已编辑的代码。@user3783999:为什么要调用
findChildren
?这是一个未记录的名称,只是为了与3.x向后兼容而提供的,即使在3.x中,它也被弃用,没有记录(当然,3.x本身也被弃用)。如果你是从一个非常古老的教程或其他东西复制和粘贴源代码,你真的不应该这样做;我以为你在用
find_all()
取代
find children()
,而不是
find
。是的,这个答案是:“如果你需要获得所有的
标记,或者比第一个具有特定名称的标记更复杂的任何东西,你需要使用搜索树中描述的方法之一,例如
find_all()
:”@abarnert是的,谢谢。我仍然试图依赖smth else,而不是获取所有
pre
标签。。
from bs4 import BeautifulSoup

soup = BeautifulSoup(open('../index.html'), 'html5lib')

pre = soup.find_all('pre')[-1]
print pre.text.strip()
00000001 taaaagatgaagtttctatcatccaaaaaatgggctacagaaacc 00000045
<<<<<<<< ||||||||||||||||||||||||||| |||||||||||||||| <<<<<<<<
41256227 taaaagatgaagtttctatcatccaaagtatgggctacagaaacc 41256183
h4 = soup.select('h4 > a[name="ali"]')[0].parent
print h4.find_next_sibling('pre').text.strip()