使用scrapy我得到一个空项目

时间:2015-11-06 17:59:47

标签: python scrapy-spider

我想使用python和scrapy从网页抓取一些信息,但是当我尝试这样做时,我的项目的输出是空的......

首先,我开始了一个带scrapy的新项目。然后我在items.py文件中写了以下内容:

import scrapy

class KakerlakeItem(scrapy.Item):
    info=scrapy.Field()
    pass

接下来,我使用以下代码在spider的文件夹中创建了一个新文件:

import scrapy

from kakerlake.items import KakerlakeItem

class Kakerlakespider(scrapy.Spider):
    name='Coco'
    allowed_domains=['http://www.goeuro.es/']
    start_urls=['http://www.goeuro.es/search/NTYzY2U2Njk4YzA1ZDoyNzE2OTU4ODM=']

    def parse(self, response):
        item=KakerlakeItem()
        item['info']=response.xpath('//span[@class= "inline-b height-100"]/text()').extract()
        #yield item
        return item

我希望通过在控制台中编写scrapy crawl Coco -o data.json,我会得到我想要的东西,但不是这样,我获得了带有{'info': []}的json文件。也就是说,一个空项目。

我尝试了很多东西,但我不知道它为什么不能正常工作......

2 个答案:

答案 0 :(得分:0)

您的xpath对页面无效,因为没有一个类具有“inline-b”或“height-100”。此页面通过Javascript进行了大量修改,因此您在浏览器中看到的内容将无法代表Scrapy收到的内容。

xpath结果:

>>> response.xpath('//span[contains(@class, "inline-b")]')
[]
>>> response.xpath('//span[contains(@class, "height-100")]')
[]

答案 1 :(得分:-1)

删除KakerlakeItem(scrapy.Item)中的传递?