Scrappy逐列输出数据,我想逐行扫描。怎么可能?

时间:2016-11-03 15:32:22

标签: python-2.7 web-scraping scrapy scrapy-spider

以下是代码和蜘蛛图片如下所示:

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

It outputs the data for the Day together and then moves to Subject.

我想要结果如下:

{'Day':Monday 'Subject':u'BIS3208 (L) - SEMINAR SERIES',u'NET3204 (P) - DISTRIBUTED SYSTEMS'}

有可能吗?

1 个答案:

答案 0 :(得分:0)

问题不是Scrapy,而是你如何创建你的物品。您必须相应地更改xpath查询,并选择每次所需的文本。现在你正在选择所有文本。

修改

为了澄清。

row.xpath('.//tr/th/strong/text()').extract() 

像这样的查询选择文档中的所有tr元素,然后选择所有子元素,这样不仅可以填充Scrapy项目所需的一个元素。您必须相应地处理使用xpath查询检索的元素,并使用该数据创建Scrapy项。 Scrapy没有其他方式可以自动了解它。