使用BeautifulSoup搜索xml条目



我知道这个话题有很多问题。。但是我不能用这个回答我的问题。。

有人能帮我怎么做吗?

我的xml文件如下所示:

...
<object>
<acronym>Mmachc</acronym>
<alias-tags>1810037K07Rik RP23-177C18.3</alias-tags>
<chromosome-id>49</chromosome-id>
<ensembl-id nil="true"/>
<entrez-id>67096</entrez-id>
<genomic-reference-update-id>491928275</genomic-reference-update-id>
<homologene-id>12082</homologene-id>
<id>42939</id>
<legacy-ensembl-gene-id nil="true"/>
<name>
methylmalonic aciduria cblC type, with homocystinuria
</name>
<organism-id>2</organism-id>
<original-name>
</original-name>
<original-symbol>Mmachc</original-symbol>
<reference-genome-id nil="true"/>
<sphinx-id>95240</sphinx-id>
<version-status>no change</version-status>
</object>
<object>
...

因此,如果我现在想搜索包含entrez id 67096的对象,看看它有哪个首字母缩写。。我先尝试了:

url = "http://api.brain-map.org/api/v2/data/query.xml?num_rows=10000&start_row=10001&&criteria=model::Gene,rma::criteria,products[abbreviation$eq%27Mouse%27]"
req = requests.get(url)
doc = req.text
root = etree.XML(doc)
soup = BeautifulSoup(doc)
dict1 = {}
for object in soup.find_all('object'):
dict1[object.find('entrez-id') == 67096] 

其输出为KeyError:False。。

有人能帮我吗?此外,如果我试图将其查找为字符串"67096",我会得到键错误false。。

您在这里并不真的需要beautifulsoup;只需尝试一下:

target = root.xpath('//entrez-id[.="67096"]/preceding-sibling::acronym/text()')
target[0]

输出:

'Mmachc'

最新更新