1. 程式人生 > >將爬取的資料傳入到pipeline中,需要對settings.py進行修改

將爬取的資料傳入到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.如果遇到同類問題,可以一同討論一下。