1 配置参数
#1 是否遵循爬虫协议
ROBOTSTXT_OBEY = False
#2 浏览器类型(默认写的是scrapy,)
USER_AGENT = \'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36\'
#3 日志级别(默认是info,执行爬虫,info会被打印出来)
# 设置成ERROR,只打印错误信息(提高爬虫效率)
LOG_LEVEL=\'ERROR\'
2 scrapy持久化
1 scrapy crawl cnblogs -o cnblogs.json (这个不需要记)
1 在items中写类,类中写字段
class CnblogsSpiderItem(scrapy.Item):
title = scrapy.Field()
desc=scrapy.Field()
url=scrapy.Field()
author=scrapy.Field()
# 重点(文章详情,如果跟之前爬过的文章对应)
content=scrapy.Field()
2 在爬虫中把要保存的字段放到item对象中
article_item[\'url\']=url
article_item[\'title\']=title
article_item[\'desc\']=desc
article_item[\'author\']=author
yield article_item
3 在控制台输入:scrapy crawl cnblogs -o cnblogs.json
2 常用方式,只记住这一种
1 在items中写类,类中写字段
class CnblogsSpiderItem(scrapy.Item):
title = scrapy.Field()
desc=scrapy.Field()
url=scrapy.Field()
author=scrapy.Field()
# 重点(文章详情,如果跟之前爬过的文章对应)
content=scrapy.Field()
2 在爬虫中把要保存的字段放到item对象中
article_item[\'url\']=url
article_item[\'title\']=title
article_item[\'desc\']=desc
article_item[\'author\']=author
yield article_item
3 在setting中配置
ITEM_PIPELINES = {
\'likecs_spider.pipelines.CnblogsSpiderFilePipeline\': 300, # 数字表示优先级,数字越小,优先级越大
\'likecs_spider.pipelines.CnblogsSpiderMysqlPipeline\': 400, # 数字表示优先级,数字越小,优先级越大
}
4 在pipline中写
class CnblogsSpiderFilePipeline:
# 爬虫启动他会执行
def open_spider(self,spider):
# spider是爬虫对象
print(spider.name)
print(\'爬虫开始了\')
self.f=open(\'cnblogs.txt\',\'w\',encoding=\'utf-8\')
def close_spider(self,spider):
# 爬虫停止会执行
print(\'爬虫停止了\')
self.f.close()
def process_item(self, item, spider):
self.f.write(item[\'title\']+item[\'desc\']+item[\'author\']+item[\'url\'])
self.f.write(\'/n\')
return item
import pymysql
class CnblogsSpiderMysqlPipeline:
def open_spider(self,spider):
self.conn=pymysql.connect( host=\'127.0.0.1\', user=\'root\', password=