|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 kent_allen 于 2017-11-29 17:19 编辑
新人求助,求鱼油们解惑。
在使用scrapy框架爬去www.imooc.com中的数据,spider程序如下:
import scrapy
from MySpider_2.items import MyspiderItem
class MySpider(scrapy.Spider):
name = 'imooc'
allowed_domains = ["imooc.com"]
start_urls = ["http://www.imooc.com/course/list"]
def parse(self, response):
#seletor对象
sel = scrapy.selector.Selector(response)
#item容器定义
item = MyspiderItem()
#items list变量,用于返回
#进行特定信息截取
#sites为存放所有项目的标签
sites = sel.xpath('//div[@class="course-card-container"]/a[@target="_blank"]')
for site in sites:
#link信息
item['link'] = "http://www.imooc.com" + site.xpath('./@href').extract()[0]
#title信息
item['title'] = site.xpath('./div[@class="course-card-content"]/h3[@class="course-card-name"]/text()').extract()[0]
#desc信息
item['desc'] = site.xpath('./div[@class="course-card-content"]/div[@class="clearfix course-card-bottom"]/p[@class="course-card-desc"]/text()').extract()[0]
yield item
执行 scrapy crawl 后可以爬取到数据
之后想用pipeline对数据进行保存,程序如下:
#引入文件
from scrapy.exceptions import DropItem
import json
class MyPipeline(object):
def __init__(self):
#打开文件
self.file = open('course.json', 'w', encoding = 'utf-8')
#该方法用于处理数据
def process_item(self, item, spider):
#读取item中的数据
line = json.dumps(item, ensure_ascii=False) + '\n'
#写入文件
self.file.write(line)
#返回item
return item
#该方法在spider被开启时被调用
def open_spider(self, spider):
pass
#该方法在spider被关闭时被调用
def close_spider(self, spider):
pass
却无法将数据保存下来
已经将该pipeline的优先级设置为1,请问这情况怎么解决呢?是哪里出问题了呢?
求各位帮帮忙
|
|