Scrapy没有保存数据

时间:2017-02-27 18:24:09

标签: python-2.7 scrapy

我正在尝试创建一个收集某些数据的蜘蛛。 有一个网站有收到的学生的排名列表。我需要所有大学的“计算机工程”专业(乌克兰语的комп'ютернаінженерія)。 没有错误,但csv文件被创建为空...

# -*- coding: utf-8 -*-
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from scrapy.contrib.loader.processor import TakeFirst
from scrapy.contrib.loader import XPathItemLoader
from scrapy.selector import HtmlXPathSelector

class StudentSpider(CrawlSpider):
    name = "student"
    allowed_domains = ["https://abit-poisk.org.ua"]
    start_urls = ["https://abit-poisk.org.ua/rate2013/region/88/"]

    rules = [
        Rule(LinkExtractor(allow=('act=univer')), follow=True),
        Rule(LinkExtractor(allow=('act=direction'),
        restrict_xpaths=(u'//td[@data-header="Напрям"]/span[contains(.,"комп’ютерна інженерія")]',)),
            callback='parse_item')
    ]

def parse_item(self, response):
    sel = Selector(response)
    links = sel.xpath('//*[@class="statement-zar"]')
    univer = sel.xpath(u'//*[@id="mainContent"]/div/a[4]/text()'.encode('utf-8')).extract_first

    for link in links:
        item = DirectoryItem()
        item['VYZ'] = univer
        item['FIO'] = link.xpath(u'td[2]/text()'.encode('utf-8')).extract()
        item['ZNO'] = link.xpath(u'td[5]/text()'.encode('utf-8')).extract()
    return items

我期待任何想法!

2 个答案:

答案 0 :(得分:0)

Scrapy具有用于导出到csv的内置工具。

来自docs

  

为此,Scrapy提供了一系列项目导出器   不同的输出格式,例如XML,CSV或JSON。

...

CsvItemExporter可能就是您正在寻找的内容:

  

将CSV格式的项目导出到给定的类文件对象

答案 1 :(得分:0)

此网站在td标头属性中有拼写错误。

尝试将规则列表中的Xpath更改为//td[@data-hedaer="Напрям"]

编辑:我在td找不到任何“span”孩子。

此表达式有效://td[@data-hedaer="Напрям" and contains(., "комп’ютерна інженерія")]