將爬取的資料傳入到pipeline中,需要對settings.py進行修改
阿新 • • 發佈:2018-11-03
爬蟲主程式碼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.如果遇到同類問題,可以一同討論一下。