Scrapy CSV导出在所有行中显示相同的数据

Scrapy CSV导出在所有行中显示相同的数据,scrapy,scrapy-spider,Scrapy,Scrapy Spider,我正在尝试提取以下html代码: <ul class="results-list" id="search-results"> <li> <h3 class="name">First John</h3> <div class="details"> <a href="mailto:example@mail.com" class="email">email</a> &nbsp; <span class="

我正在尝试提取以下html代码:

<ul class="results-list" id="search-results">
<li>
<h3 class="name">First John</h3>
<div class="details">
<a href="mailto:example@mail.com" class="email">email</a>
&nbsp;
<span class="phone">999999999</span>
</div>
</li>
<li>
<h3 class="name">Second John</h3>
<div class="details">
<a href="mailto:example@mail.com" class="email">email</a>
&nbsp;
<span class="phone">999999999</span>
</div>
</li>
</ul>

但是,当我运行scrapy crawl MySpider-o output.csv时,所有行中的信息都相同。

如果您在xpath表达式上使用绝对路径,请将它们更改为:

for person in people:
    item = SpiderItem()
    item['Name'] = person.xpath(
        './/h3/text()').extract_first()
    item['Email'] = person.xpath(
        './/div[@class="details"]/a/@href').extract_first()
    item['Phone'] = person.xpath(
        './/div[@class="details"]/span[@class="phone"]/text()').extract_first()
    yield item

谢谢。现在很有魅力。
for person in people:
    item = SpiderItem()
    item['Name'] = person.xpath(
        './/h3/text()').extract_first()
    item['Email'] = person.xpath(
        './/div[@class="details"]/a/@href').extract_first()
    item['Phone'] = person.xpath(
        './/div[@class="details"]/span[@class="phone"]/text()').extract_first()
    yield item