我想使用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文件。也就是说,一个空项目。
我尝试了很多东西,但我不知道它为什么不能正常工作......
答案 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)中的传递?