将爬取的数据传入到pipeline中,需要对settings.py进行修改

爬虫主代码xx.py完成之后,在Terminal端,运行scrapy crawl xx.py

1.如果运行结果正确,这时候,我们需要将爬取的数据通过某种途径(数据库、.txt存入本地或者其他)存储下来,此时pipeline.py文件用来决定到此是以哪种方式存储下来。

此时,首先编写pipeline.py文件,比如我希望将我爬取的信息存入本地,此时pipeline.py文件如下:

import scrapy
import codecs
import sys
from imp import reload

reload(sys)
#sys.setdefaultencoding('utf-8')


class NewsPipeline(object):
    def process_item(self, item, spider):
        file_name = item['news_title']
        file_name += '.txt'
        fp = codecs.open(item['path'] + '/' + file_name, 'w')
        fp.write('name_id:' + item['name_id'] + '\n')
        fp.write('website_name:' + item['website_name'] + '\n')
        fp.write('post_name:' + item['post_name'] + '\n')
        fp.write('news_url:' + item['news_url'] + '\n')
        fp.write('news_author:' + item['news_author'] + '\n')
        fp.write('publish_time:' + item['publish_time'] + '\n')
        fp.write('crawl_time:' + item['date'] + '\n')
        fp.write('news_tags:' + item['news_tag'] + '\n')
        fp.write('news_title:' + item['news_title'] + '\n')
        fp.write('news_content:' + item['article_contentText'] + '\n')
        fp.close()
        return item

2.其此,需要将爬虫文件获取的数据传入到pipeline中,需要通过设置settings.py文件

将ITEM_PIPELINES中的这三行注释去掉。其中'xx.pipelines.XxPipeline' (xx表示自定义的爬虫名称),这一步完成之后,可以查看到本地已经存储下来爬取的数据。

ITEM_PIPELINES = {
    'news.pipelines.NewsPipeline': 300,
}

3.如果遇到同类问题,可以一同讨论一下。

猜你喜欢

转载自blog.csdn.net/u013155359/article/details/81567192