以下是代码和蜘蛛图片如下所示:
def parse_getData(self, response):
rows=response.xpath('//*[@id="table-timetable"]/table/tbody')
items=[]
for row in rows:
item = ScraperItem()
item['Day'] = row.xpath('.//tr/th/strong/text()').extract()
item['Time'] = row.xpath('.//td/span[1]/text()').extract()
item['Venue']=row.xpath('.//td/span[3]/text()').extract()
item['Subject']=row.xpath('.//td/strong/text()').extract()
items.append(item)
return items
我想要结果如下:
{'Day':Monday 'Subject':u'BIS3208 (L) - SEMINAR SERIES',u'NET3204 (P) - DISTRIBUTED SYSTEMS'}
有可能吗?
答案 0 :(得分:0)
问题不是Scrapy,而是你如何创建你的物品。您必须相应地更改xpath查询,并选择每次所需的文本。现在你正在选择所有文本。
修改
为了澄清。
row.xpath('.//tr/th/strong/text()').extract()
像这样的查询选择文档中的所有tr元素,然后选择所有子元素,这样不仅可以填充Scrapy项目所需的一个元素。您必须相应地处理使用xpath查询检索的元素,并使用该数据创建Scrapy项。 Scrapy没有其他方式可以自动了解它。