<p>xpath工作的思想不是<code>loop</code>提取的列表,而是在xpath的父节点中。</p>
<p>目前我的mac电脑上没有“scrapy”,但这里的技术应该同样适用,比如:</p>
<pre><code># I use lxml for loose html string parsing
from lxml import html
s = '''<dt><a href="/index.php?term=address&allowed_in_frame=0">address (n.)</a> <a href="http://dictionary.reference.com/search?q=address" class="dictionary" title="Look up address at Dictionary.com"><img src="graphics/dictionary.gif" width="16" height="16" alt="Look up address at Dictionary.com" title="Look up address at Dictionary.com" /></a></dt>
<dd>1530s, "dutiful or courteous approach," from <a href="/index.php?term=address&allowed_in_frame=0" class="crossreference">address</a> (v.) and from French <span class="foreign">adresse</span>. Sense of "formal speech" is from 1751. Sense of "superscription of a letter" is from 1712 and led to the meaning "place of residence" (1888).</dd>'''
sel = html.fromstring(s)
# rather than extracting the words straight away, you loop from the parent xpath
for nodes in sel.xpath('//dt'):
# then access a node to get the text
print nodes.xpath('a/text()')
# and go back to parent and search the dd node
print nodes.xpath('../dd/text()')
# sample results
['address (n.)']
['1530s, "dutiful or courteous approach," from ', ' (v.) and from French ', '. Sense of "formal speech" is from 1751. Sense of "superscription of a letter" is from 1712 and led to the meaning "place of residence" (1888).']
</code></pre>
<p>希望这有帮助。</p>