爬虫主代码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.如果遇到同类问题,可以一同讨论一下。