我正在尝试解析搜索引擎API(Bing,Yahoo& Blekko)返回的XML。 Blekko返回的XML(用于样本搜索查询'sushi')采用以下形式:
<rss version="2.0">
<channel>
<title>blekko | rss for "sushi/rss /ps=100"</title>
<link>http://blekko.com/?q=sushi%2Frss+%2Fps%3D100</link>
<description>Blekko search for "sushi/rss /ps=100"</description>
<language>en-us</language>
<copyright>Copyright 2011 Blekko, Inc.</copyright>
<docs>http://cyber.law.harvard.edu/rss/rss.html</docs>
<webMaster>webmaster@blekko.com</webMaster>
<rescount>3M</rescount>
<item>
<title>Sushi - Wikipedia</title>
<link>http://en.wikipedia.org/wiki/Sushi</link>
<guid>http://en.wikipedia.org/wiki/Sushi</guid>
<description>Article about sushi, a food made of vinegared rice combined with various toppings or fillings. Sushi ( すし、寿司, 鮨, 鮓, 寿斗, 寿し, 壽司.</description>
</item>
</channel>
</rss>
用于提取所需搜索结果数据的python代码部分是:
for counter in range(100):
try:
for item in BlekkoSearchResultsXML.getElementsByTagName('item'):
Blekko_PageTitle = item.getElementsByTagName('title')[counter].toxml(encoding="utf-8")
Blekko_PageDesc = item.getElementsByTagName('description')[counter].toxml(encoding="utf-8")
Blekko_DisplayURL = item.getElementsByTagName('guid')[counter].toxml(encoding="utf-8")
Blekko_URL = item.getElementsByTagName('link')[counter].toxml(encoding="utf-8")
print "<h2>" + Blekko_PageTitle + "</h2><br />"
print Blekko_PageDesc + "<br />"
print Blekko_DisplayURL + "<br />"
print Blekko_URL + "<br />"
except IndexError:
break
代码不会提取返回的每个搜索结果的页面标题,但会提取其余信息。
此外,如果我没有代码:
print "<title>Page title to appear on browser tab</title>"
在脚本的某处,将第一个搜索结果的标题作为页面标题(即在浏览器中出现标题为“Sushi - Wikipedia”的页面)。如果我有页面标题,代码仍然不会从搜索结果中提取页面标题。
相同的代码(具有不同的标记名称等)与Yahoo搜索API具有相同的问题,但与Bing搜索API一起正常工作。
答案 0 :(得分:1)
我想.toxml()方法返回元素的XML,包括它的分隔标记,然后你得到这样的东西:
<h2><title>...</title></h2><br />
<description>...</description><br />
<guid>...</guid><br />
title
元素因此被解释为页面标题,除非您事先指定自己的元素。浏览器不知道其他元素,它只是按原样显示其内容。