我正在尝试创建一个收集某些数据的蜘蛛。 有一个网站有收到的学生的排名列表。我需要所有大学的“计算机工程”专业(乌克兰语的комп'ютернаінженерія)。 没有错误,但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
我期待任何想法!
答案 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(., "комп’ютерна інженерія")]