<p>从给定的示例URL来看,对于包含更多记录的页面,其值应该是什么以及提取应该如何进行泛化并不十分明显。所以我尝试了一个不同的页面,包含多个记录,让我们看看结果是否符合您的需要。下面是准备运行的代码:</p>
<pre><code># -*- coding: utf-8 -*-
import scrapy
class PhenolExplorerSpider(scrapy.Spider):
name = 'phenol-explorer'
start_urls = ['http://phenol-explorer.eu/contents/food/29?utf8=/']
def parse(self, response):
chromatography = response.xpath('//div[@id="chromatography"]')
title = chromatography.xpath('.//tr/th[@class="outer"]/strong/a/text()').extract_first()
for row in chromatography.xpath('.//tr[not(@class="header")]'):
class_ = row.xpath('./td[@rowspan]/text()').extract_first()
if not class_:
class_ = row.xpath('./preceding-sibling::tr[td[@rowspan]][1]/td[@rowspan]/text()').extract_first()
subclass = row.xpath('./td[not(@rowspan)][1]/a/text()').extract_first()
#content = row.xpath('./td[not(@rowspan)][2]/a[2]/text()').extract_first()
content = row.xpath('./td[not(@rowspan)][2]/text()').extract_first()
yield {
'title': title.strip(),
'class': class_.strip(),
'subclass': subclass.strip(),
'content': content.strip(),
}
</code></pre>
<p>基本上,它迭代表的各个行,并从相应的字段中提取数据,一旦收集到完整的信息,就生成一个项。在</p>